почему число с плавающей точкой IEEE вычисляет экспоненту с помощью смещенной формы?

скажем, для типа плавающего в c, согласно спецификации плавающей точки IEEE, существуют 8-разрядный используемый для части, зарегистрированной, и это вычисляется, как сначала взято они 8-разрядные и перевело его в неподписанное число, и затем минус BIASE, который является 2^7 - 1 = 127, и результатом являются диапазоны экспоненты от-127 до 128, включительно. Но почему мы не можем только рассматривать их 8-разрядный шаблон как число со знаком, так как получающийся диапазон [-128 127], который является почти тем же как предыдущим.

13
задан mochidino 10 April 2010 в 08:39
поделиться

1 ответ

Цель смещения состоит в том, чтобы показатель степени сохранялся в беззнаковой форме, что упрощает сравнение. Из Википедия :

Расположив поля так, чтобы бит знака находился в позиции самого старшего бита , смещенная экспонента в середине , затем мантисса в младших значащих битах, результирующее значение будет упорядочено должным образом, независимо от того, интерпретируется ли оно как значение с плавающей запятой или целочисленное значение. Это обеспечивает высокую скорость сравнения чисел с плавающей запятой с использованием оборудования с фиксированной запятой.

В общем, число с плавающей запятой:

[sign] [unsigned exponent (aka exponent + bias)] [mantissa]

Этот веб-сайт предоставляет отличную информацию о том, почему это хорошо - в частности, сравните реализации функций сравнения с плавающей запятой.

Кроме того, ни один полный ответ о странностях с плавающей запятой не может обходиться без упоминания « Что должен знать каждый компьютерный ученый об арифметике с плавающей запятой ». Оно длинное, плотное и немного тяжелое по математике, но это длинное плотное математическое золото (или что-то в этом роде).

16
ответ дан 2 December 2019 в 00:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: