2011-12-20 4 views
-3

У меня возникли проблемы с пониманием 16-битных плавающих точек для предстоящего экзамена. У меня есть следующие цифры в двоичном (после преобразования);16 бит с плавающей запятой

+11100.111000 = 28.875 . Мне было легко, но как мне получить «875»?

Благодаря

+0

«получить», каким образом? алгоритмически преобразовать в десятичную строку? – harold

+1

Вы имеете в виду 28.875 основание 10, а не основание 2, правильно? –

+2

Это не похоже на плавающую точку, как предполагаемая десятичная (двоичная?) Точка. Если бы это была плавающая точка, у вас обычно не было бы десятичной точки посередине. –

ответ

1

В ряде, значение цифры умножается на константу, в зависимости от положения. Давайте рассмотрим пример для десятичного числа:

ab.cd = А * 10 + B * 10 + C * 10 -1 + D * 10 -2

Он работает аналогично для двоичных чисел. Для части справа от двоичной точки в вашем примере:

0,111000 = 2 -1 + 2 -2 + 2 -3 = 0,5 + 0,25 + 0,125 = 0,875 ,

+0

Итак, это правда, откуда я могу получить эти цифры? –

+0

Они всего лишь 1/2, 1/4, 1/8 - только обратные нормальные двоичные числа –

+0

@ChrisArom Какие числа? Бинарная часть моего ответа была получена от вас. Если вы имеете в виду 2^-1 (и так далее), это потому, что это базовое число (т. Е. Двоичное). Для base-10 (десятичный) это будет 10^-1. Для base-8 (восьмеричное) это будет 8^-1. –

1

Левая сторона. это умножить на 2, правая сторона делят на 2.

Таким образом, вы получили 0.1110

0,1 = 0,5
0,01 = 0,25
0,001 = 0,125
----------- ----- +
0,875

+0

Спасибо большое! ;) –

Смежные вопросы