Давать преобразование 10/322 без калькулятора в качестве упражнения - это чистый садизм.
Существует общий метод, который можно выполнить без инструментов, но он может быть утомительным.
N is the number to code. We assume n<1
exp=0
mantissa=0
repeat
n *= 2
exp ++
if n>1
n = n-1
mantissa = mantissa <<1 | 1
else
mantissa = mantissa <<1
until mantissa is a 1 followed by 23 bits
Тогда вам просто нужно кодировать mantissa и (23-exp) в формате IEEE.
Обратите внимание, что часто такого рода вычисления приводят к циклам.Всякий раз, когда вы находите тот же самый n, вы знаете, что последовательность будет повторяться.
В качестве примера предположим, что мы должны кодировать 3/14
3/14 -> 6/14 e=1 m=0
6/14 -> 12/14 e=2 m=00
12/14 -> 24/14-14/14=10/14 e=3 m=001
10->14 -> 20/14-14/14=6/14 e=4 m=0011
6/14 -> 12/14 e=5 m=00110
Отлично, мы нашли цикл!
6 / 14-> 12 / 14-> 10 / 14-> 6 / 14.
Таким образом, мантисса будет итерацией 110, как требуется 110110110 ...
Если мы наполним мантиссу 24бит, нам нужно 26 итераций, а показатель степени равен 23-26 = -3 (еще один способ получить это - заметить, что n стало> 1 впервые на итерации 3, а показатель степени равен -3 как 1≤3 / 14 * 2 ^3 <2). </p>
И мы можем сделать кодирование IEEE754 с показателем степени = 127-3 = 124 и мантиссой = 1.1011011011011 ....