[an error occurred while processing this directive]
|
Если еще не кинули, то вот кратко про биас и экспоненту для 754.
Значение bias связано с представлением мантиссы.
Биас=127, если мантиссу, точнее ее модуль, после выделения скрытого разряда (или наоборот, до его удаления) представить в виде:1.M22M21M20...M0.
1 - скрытый разряд (не знаковый), точка после нее - десятичная.
M22-M0 "нескрываемые" разряды мантиссы.
Вес M22=2^(-1). Т.е. вес скрытого разряда=2^0.
Чаще используют другое представление:
0.1M22M21M20...M0. Здесь вес скрытого разряда уже 2^(-1), вес M22 -
2^(-2). Операция нормализации обычно приводит число к такому виду.
И операция определения экспоненты обычно работает исходя из такого представления. По сути это обычный доп.код: старший разряд знаковый, с весом 2^0, веса остальных 2^(-1),2^(-2),....
И для такого представления bias=126
Пример. Дв. код плавающей 1 =0x3f800000.
Здесь exp+bias=0x7f=127. Т.к. bias=126, то exp=1.
Мантисса, после восстановления скрытого разряда,=0x400000=0.5.
И результирующее число=0.5*2^1=1.
Если считать, что bias=127, то мантиссу надо бы записать в виде:
0x800000=1. В результате-то будет то же самое, но код мантиссы смахивает на отрицательное число.
Иногда при преобразованиях в каких-то процессорах используют bias=127, зависит от системы команд и удобства. Например в c62-c64 есть команда LMBD - подсчет числа самых старших подряд идущих 1 или 0 (от аргумента зависит). Хотя есть и команда NORM - подсчет незначащих знаковых битов (в C54 ее аналог - exp), но иногда удобнее использовать LMBD с соотв. аргументом. Результат LMBD на 1 больше результата NORM, соответственно и bias будет для нее=127.
E-mail: info@telesys.ru