как работают числа с плавающей точкой IEEE 754

Скажем, у меня есть это:

float i = 1.5

в двоичном файле это плавание представлено как:

0 01111111 10000000000000000000000

Я разбил двоичный файл для представления 'со знаком', 'экспоненты' и 'дробных' блоков.

То, что я не понимаю, - то, как это представляет 1.5.

Экспонента 0, после того как Вы вычитаете предвзятость (127 - 127), и часть расстается с неявным продвижением того, 1.1.

Как делает 1,1 масштабируемых ничем = 1.5???

9
задан Stephen Canon 25 April 2010 в 02:35
поделиться

4 ответа

Сначала подумайте о десятичных числах (основание 10): 643,72 это:

  • (6 * 10 2 ) +
  • (4 * 10 1 ) +
  • (3 * 10 0 ) +
  • (7 * 10 -1 ) +
  • (2 * 10 -2 )

или 600 + 40 + 3 + 7/10 + 2/100.

Это потому, что n 0 всегда равно 1, n -1 совпадает с 1 / n (для конкретного случая) и n -m равно идентично 1 / n m (для более общего случая).

Точно так же двоичное число 1.1:

  • (1 * 2 0 ) +
  • (1 * 2 -1 )

с 2 ] 0 равняется единице, а 2 -1 - половине.

В десятичном формате числа слева от десятичной точки имеют множители 1, 10, 100 и т. Д., Идущие влево от десятичной точки, и 1/10, 1/100, 1/1000, заголовок вправо (т. Е. 10 2 , 10 1 , 10 0 , десятичная точка, 10 -1 , 10 -2 ,. ..).

В системе счисления 2 числа слева от двоичной точки имеют множители 1, 2, 4, 8, 16 и т. Д. В заголовке слева. Цифры справа имеют множители 1/2, 1/4, 1/8 и т. Д., Идущие вправо.

Так, например, двоичное число:

101.00101
| |   | |
| |   | +- 1/32
| |   +---  1/8
| +-------    1
+---------    4

эквивалентно:

4 + 1 + 1/8 + 1/32

или:

    5
5  --
   32
25
ответ дан 4 December 2019 в 06:56
поделиться

Мантисса существенно сдвинута на показатель степени.

3 in binary is 0011
3>>1 in binary, equal to 3/2, is 0001.1
1
ответ дан 4 December 2019 в 06:56
поделиться

Вы хотите прочитать это - IEEE 754-1985

Фактический стандарт здесь

0
ответ дан 4 December 2019 в 06:56
поделиться

1,1 в двоичном формате равно 1 + .5 = 1,5

7
ответ дан 4 December 2019 в 06:56
поделиться
Другие вопросы по тегам:

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