Преобразование десятичного числа в нотацию с плавающей запятой и формат IEEE 754 - PullRequest
0 голосов
/ 04 февраля 2020

Я делаю задание для одного из моих классов, и я застрял на этих двух вопросах:

  1. Express десятичное значение -412,8 с использованием двоичной записи с плавающей запятой с использованием 11 битов дроби для значение и 3 цифры для показателя степени без смещения

Я думаю, что мне удалось решить его, но мой показатель имеет 4 бита, а не 3. Я не совсем понимаю, как можно преобразовать -412,8 в плавающее обозначение точки с использованием только 3-битных показателей. Вот как я пытался ее решить:

Прежде всего, запись с плавающей запятой состоит из трех частей. Часть знака, 0 для положительных чисел и 1 для отрицательных чисел, часть экспоненты и, наконец, мантисса. Мантисса в этом случае включает ведущий 1. Поскольку число отрицательное, знаковый бит будет равен 1. Для мантиссы я сначала преобразовал 412,8 в двоичную, что дало мне 110011100.11, а затем сместил десятичную точку влево 8 раз, что дает мне 1.1001110011. Мантисса, следовательно, 1100 1110 011 (11 бит, как спросил учитель). Наконец, показатель будет равен 2 ^ 8, так как я сдвинул десятичное число 8 раз вправо. 8 - это 1000 в двоичном виде. Итак, правильно ли я предположить, что моя запись с плавающей точкой должна быть 1 1000 11001110011?

Представляет десятичное число 16,1875 × 2-134 в формате IEEE 754 одинарной точности. Я полностью застрял на этом. Я не знаю, как конвертировать это число. Когда я ввожу его в вольфраме, десятичное число выходит за пределы формата с одинарной точностью. Я знаю, что знаковый бит будет равен 0, поскольку число положительное. Я не знаю, что такое мантисса и как ее найти. Я также не знаю, как найти экспоненту. Может кто-нибудь направить меня через эту проблему? Спасибо.

1 Ответ

1 голос
/ 04 февраля 2020

Для 1 вы, кажется, правы - нет способа представить экспоненту беспристрастно в 3 бита. Конечно, проблема говорит «3 цифры» и не определяет базу для цифр ...

2 относительно прямолинейно - преобразование значения в двоичное дает 10000.0011, а затем нормализацию, давая 1.00000011 × 2 -130 . Теперь -130 слишком мало для показателя одинарной точности (минимум -126), поэтому нам нужно денормализовать (продолжить смещение точки, чтобы получить показатель -126), что дает нам 0,000100000011 × 2 -126 . Вот тогда наша мантисса (с пропущенным 0) и полем экспоненты 0: 0 | 00000000 | 00010000001100000000000 (вертикальные черты, разделяющие поля знак / экспонента / мантисса) или 0x00081800

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...