В двоичной записи, что означает значение цифр после радикальной точки «.»

У меня есть этот пример о том, как преобразовать из числа 10 базы в представление IEEE 754 с плавающей запятой

Number: 45.25 (base 10) = 101101.01 (base 2) Sign: 0
Normalized form N = 1.0110101 * 2^5
Exponent esp = 5  E = 5 + 127 = 132 (base 10) = 10000100 (base 2)
IEEE 754: 0 10000100 01101010000000000000000

Это имеет смысл для меня, за исключением одного отрывка:

45.25 (base 10) = 101101.01 (base 2)

45 — это 101101 в двоичном формате, и это нормально … но как они получили 0,25 как 0,01?

42

Решение

Вы можете преобразовать деталь после десятичной точки в другую базу, многократно умножив ее на новую базу (в этом случае новая база равна 2), например так:

0.25 * 2 = 0.5

-> Первая двоичная цифра равна 0 (возьмите неотъемлемую часть, то есть часть перед десятичной запятой).

Продолжайте умножать на часть после десятичной запятой:

0.5 * 2 = 1.0

-> Вторая двоичная цифра — 1 (опять же, взять неотъемлемую часть).

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

Следовательно, окончательное двоичное представление дробной части: 0,012.

Редактировать:

Стоит также отметить, что довольно часто двоичное представление бесконечно, даже если начинать с конечной дробной части в базе 10. Пример: преобразование 0.210 в двоичный файл:

0.2 * 2 = 0.4   ->   0
0.4 * 2 = 0.8   ->   0
0.8 * 2 = 1.6   ->   1
0.6 * 2 = 1.2   ->   1
0.2 * 2 = ...

Таким образом, мы в конечном итоге с: 0,001100110011 …2.

Используя этот метод, вы довольно легко видите, является ли двоичное представление бесконечным.

30

Другие решения

Простая стоимость места. В базе 10 у вас есть эти места:

… 103 102 101 100 . 10-1 10-2 10-3

… тысячи, сотни, десятки, единицы. десятые, сотые, тысячные …

Точно так же в двоичном (база 2) у вас есть:

… 23 22 21 20 . 2-1 2-2 2-3

… восьмерки, четверки, двоеки, единицы. половинки, четверти, восьмые …

Итак, второе место после . в двоичном виде это единицы 2-2, хорошо известны вам как единицы 1/4 (или, альтернативно, 0,25).

125

«Десятичные дроби» (дробные биты) в других базах удивительно не интуитивны, учитывая, что они работают точно так же, как целые числа.

base 10
scinot 10e2  10e1  10e0 10e-1 10e-2 10e-3
weight 100.0 10.0   1.0  0.1   0.01  0.001
value  0     4      5     .2      5      0

base 2
scinot 2e6 2e5 2e4 2e3 2e2 2e1 2e0 2e-1 2e-2 2e-3
weight 64  32  16   8   4   2   1   .5   .25 .125
value   0   1   0   1   1   0   1   .0    1    0

Если мы начнем с 45,25, это больше / равно 32, поэтому мы добавляем двоичный 1 и вычитаем 32.
Нам осталось 13,25, что меньше 16, поэтому мы добавляем двоичный 0.
У нас осталось 13,25, что больше / равно 8, поэтому мы добавляем двоичный 1 и вычитаем 8.
Нам осталось 05,25, что больше / равно 4, поэтому мы добавляем двоичный 1 и вычитаем 4.
У нас осталось 01.25, которое меньше 2, поэтому мы добавляем двоичный 0.
У нас осталось 01.25, которое больше / равно 1, поэтому мы добавляем двоичный 1 и вычитаем 1.
С целыми числами у нас останется ноль, поэтому мы остановимся. Но:
У нас осталось 00,25, что меньше 0,5, поэтому мы добавляем двоичный 0.
У нас осталось 00,25, которое больше / равно 0,25, поэтому мы добавляем двоичный 1 и вычитаем 0,25.
Сейчас у нас ноль, поэтому мы останавливаемся (или нет, вы можете продолжать и вычислять нули, если хотите)

Обратите внимание, что не все «простые» числа в десятичной системе всегда достигают этой нулевой точки остановки. 0,1 (десятичное), преобразованное в основание 2, бесконечно повторяется: 0,0001100110011001100110011 … Однако все «простые» числа в двоичном виде всегда будут хорошо преобразовываться в основание 10.

Вы можете также выполнить этот же процесс с дробными (2.5), иррациональными (pi) или даже мнимыми (2i) основаниями, за исключением того, что основание не может быть между -1 и 1 включительно.

13

+2,00010 = 2+1 = 10.0002
+1,00010 = 2+0 = 01.0002
0,50010 = 2-1 = 00,1002
0,25010 = 2-2 = 00.0102
0,12510 = 2-3 = 00,0012

11

Фракция основания 2 составляет .1 = 1/2, .01 = 1/4. …

8

Подумай об этом так

(точка) 2 ^ -1 2 ^ -2 2 ^ -3 и т. д.

так

. 0/2 + 1/4 + 0/8 + 0/16 и т. Д.

Увидеть http://floating-point-gui.de/formats/binary/

4

Вы можете думать о 0,25 как 1/4.

Деление на 2 в (основание 2) перемещает десятичную точку на один шаг влево, аналогично делению на 10 в (основание 10) перемещает десятичную точку на один шаг влево. Обычно деление на M в (основание M) перемещает десятичную точку на один шаг влево.

так

base 10                  base 2
--------------------------------------
1                      =>      1
1/2 = 0.5              =>    0.1
0.5/2 = 1/4 = 0.25     =>   0.01
0.25/2 = 1/8 = 0.125   =>  0.001
.
.
.

и т.п.

1
По вопросам рекламы [email protected]