плавающие точки: основанные на IEEE, но нестандартное преобразование битовых значений в двоичные - PullRequest
0 голосов
/ 03 декабря 2009

Итак, вот что у нас есть, пользовательская настройка на основе IEEE:

Рассмотрим пятибитное плавающее представительство на основе IEEE формат с плавающей запятой с 1 знаковым битом, два экспонентных бита и 2 значащих бит.

И выбор битов, которые нужно было преобразовать в двоичные (включая ответы):

0 00 00 = 0

00 00 01 = 0,01

0 00 10 = 0,10

0 00 11 = 0,11

0 01 00 = 1,00

0 01 01 = 1,01

0 01 10 = 1,10

Способ, которым я пытался вычислить вышеизложенное, был следующим:

2 ^ (2-1) -1 = 1 (смещение)

для второго, это будет означать 0 -1 (поскольку поле экспоненты равно нулю), поэтому 0,1 * 10-1 = 0,01. Единственная проблема состоит в том, что мы, кажется, не добавляем неявное начальное 1. почему нет? и все же кажется, что для значений с положительным показателем (см. 5 и ниже) мы действительно добавляем ведущее. немного озадачен тем, что мне не хватает.

большое спасибо!

Ответы [ 2 ]

1 голос
/ 03 декабря 2009

Что вам не хватает, так это то, что в форматах IEEE-754 значения, имеющие нулевой показатель степени, но ненулевое значение и поле, называемое denormals , не имеют неявного начального бита.

Например, в IEEE с одинарной точностью наименьшее положительное нормальное число:

0x00800000 = 0x1.0 * 2**-126

следующее меньшее число является наибольшим денормалем:

0x007fffff = 0x0.fffffe * 2**-126

наименьшее положительное число является наименьшим ненормальным:

0x00000001 = 0x0.000002 * 2**-126

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

1 голос
/ 03 декабря 2009

Вы, вероятно, обменялись экспонентой и столбцом мантиссы. Может быть, потому что это выглядело так уместно.

...