Я пытаюсь решить эту проблему в Verilog
0,1 = 0,5 = 5 х 10 ^ -1
0,01 = 0,25 = 2,5 х 10 ^ -1
0,001 = 0,125 = 1,25 x 10 ^ -1
0,0001 = 0,0625 = 6,25 x 10 ^ -2
10,10101 = 3,66525 = 3,66525 x 10 ^ 0
110110,10101 = 54,65625 = 5,465625 x 10 ^ 1
Итак, как из входного двоичного файла узнать, какова экспонента 10?Кроме того, как узнать десятичное значение (т.е. 5, 25, 125, 625, 365625, 5465625)?Учитывая, что все входные значения представляют собой 24 двоичных разряда (пример выше составляет 2, 3, 4, 5, 7, 11 MSB 24-разрядного двоичного входа соответственно).
На самом деле, проблема связана с IEEE 754 32биты, преобразовать его в научную нотацию, но он не говорит, каковы требования к выходу?поэтому я просто предполагаю, что если у меня есть
1_10001010_00110110110100000000000 = -2486.5
, у меня будет 3 выхода, один для знака, один для числа 24865 (сдесятичная точка стоит после первой цифры), а одна - показатель степени 10. Так что истинная проблема в том, что если у меня есть
1000.10 (просто двоичный код с фиксированной точкой) = 8,5
я мог бы вычислить целую часть (= 8).Но я не могу найти способ рассчитать число 5 (0,1).Выход может быть 2 части, одна целое число, а другая дробь.В приведенной выше задаче целое число равно 8, а доля равно 5.
1111.10101 (с фиксированной точкой) = 15.62562
Итак, здесь целое число равно 15, а дробное число равно 62562. Целое числочасть легка, она как есть (1111 - 15, 1000 - 8).Но часть дроби, я не знаю, как конвертировать (.1 это 5, .10101 это 62562).
Как я могу решить?Спасибо