Прежде всего вам нужно понять, что каждое число «z» может быть представлено
z = m * b^e
m = мантисса, b = смещение, e = показатель степени
Таким образом, -0,625 можно представить как:
-0.625 * 10^ 0
-6,25 * 10^-1
-62,5 * 10^-2
-0,0625 * 10^ 1
С преобразованием IEEE мы стремимся к нормализованному числу с плавающей запятой, что означает, что перед запятой есть только одно предшествующее число (-6,25 * 10^-1)
В двоичном формате единственное число перед запятой всегда будет 1, поэтому это число не будет сохранено.
Вы конвертируете в 16-битное число с плавающей запятой, поэтому у вас есть:
1 бит знак 5 бит экспонента 10 бит мантисса == 16 бит
Поскольку показатель степени может быть отрицательным и положительным (как вы видели выше, это зависит только от смещения запятой), они придумали так называемое смещение. Для 5 бит значение смещения равно 01 111 == 15(dez), где 14 соответствует ^-1, а 16 соответствует ^1...
Хорошо, достаточно светской беседы, давайте конвертируем ваш номер в качестве примера, чтобы показать процесс конвертации:
- Преобразуйте преддесятичную позицию в двоичную, как всегда
- Умножьте десятичный разряд на 2, если результат больше 1, вычтите 1 и запишите 1, если он меньше 0 запишите 0. Продолжайте этот шаг, пока результат не будет == 0 или вы не записали столько чисел, сколько имеет ваша мантисса.
- сдвиньте запятую только до одного знака после запятой и подсчитайте сдвиги. если вы сдвинулись влево, добавьте счет к смещению, если вам нужно сместиться вправо, вычтите счет из смещения. Это ваш показатель
- Определите свой знак и сложите все части вместе
-0,625
1. 0 в двоичный == 0
2.
0,625 * 2 = 1,25 ==> -1
0,25 * 2 = 0,5 ==> 0
0,5 * 2 = 1 ==> -1
Прервать
3. Таким образом, промежуточный результат равен -0,101
сдвинуть запятую на 1 раз вправо для нормализованного числа с плавающей запятой:
- 1.01
показатель степени = смещение + (-1) == 15 - 1 == 14(дез) == 01110(бин)
4. Соединить части, знак = 1(отрицательный), ( и помните, что мы не сохраняем первую единицу числа)
1 01110 01
поскольку мы прервали вычисление мантиссы, заполните остальные биты 0:
1 01110 01 000 000 00
person
Jan Raufelder
schedule
29.08.2016