Подтвердить что ты не робот

В двоичной нотации, каково значение цифр после точки счисления "."?

У меня есть этот пример о том, как преобразовать из базового числа 10 в представление float 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?

4b9b3361

Ответ 1

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

0.25 * 2 = 0.5

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

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

0.5 * 2 = 1.0

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

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

Поэтому окончательное двоичное представление дробной части: 0,01 2.

Edit:

Также стоит отметить, что довольно часто бинарное представление бесконечно даже при запуске с конечной дробной частью в базе 10. Пример: преобразование 0,2 10 в двоичный:

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.

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

Ответ 2

Простое значение места. В базе 10 у вас есть следующие места:

... 10 3 10 2 10 1 10 0. 10 -1 10 -2 10 -3...

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

Аналогично, в двоичном (основание 2) у вас есть:

... 2 3 2 2 2 1 2 0. 2 -1 2 -2 2 -3...

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

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

Ответ 3

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

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 включительно.

Ответ 4

2.000 10= 2 +1= 10.000 2
1.000 10= 2 +0= 01.000 2
0,500 10= 2 -1= 00.100 2
0.250 10= 2 -2= 00.010 2
0.125 10= 2 -3= 00.001 2

Ответ 5

База дробей 2 равна .1 = 1/2,.01 = 1/4....

Ответ 7

Вы можете думать о 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
.
.
.

и др.