Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

В принципе, число с плавающей запятой:

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

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

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