Как представить отрицательное число с дробью в дополнении 2?

поэтому я хочу представить число -12.5. Итак, 12.5 равно:

001100.100

если я не вычисляю дробь, то это просто,-12 - это:

110100

но что такое -12.5? это 110100.100? Как я могу вычислить эту отрицательную дробь?

3 ответов


с десятичными системами счисления каждая позиция числа (или столбец) представляет (чтение числа справа налево): единицы (что составляет 10^0), десятки (т. е. 10^1),сотни (т. е. 10^2) и т. д.

С беззнаковыми двоичными числами база равна 2, поэтому каждая позиция становится (опять же, чтение справа налево): 1 (т. е. 2^0), 2 (т. е. 2^1), 4 (т. е. 2^2) и т. д.

2^2 (4), 2^1 (2), 2^0 (1).

in signed twos-дополняют самый значительный бит (MSB) становится негативным. Поэтому он представляет собой знак числа: "1" для отрицательного числа и " 0 " для положительного числа.

для трехразрядного числа строки будут содержать следующие значения:

-4, 2, 1
 0  0  1 => 1
 1  0  0 => -4
 1  0  1 => -4 + 1 = -3

значение битов, удерживаемых системой с фиксированной точкой (дробной), не изменяется. Значения столбцов следуют тому же шаблону, что и раньше, база (2) в степени, но с отрицательной мощностью:

2^2 (4), 2^1 (2), 2^0 (1) . 2^-1 (0.5), 2^-2 (0.25), 2^-3 (0.125)

-1 всегда будет 111.000
-0.5 добавить 0.5 к ней: 111.100

в вашем случае 110100.10 равна -32+16+4+0.5 = -11.5. Вы создали -12, а затем добавили 0.5, а не вычитали 0.5.

что вы действительно хотите это -32+16+2+1+0.5 = -12.5 = 110011.1


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

-25 это 11100111, так -12.5 является 1110011.1


Итак; U хотите представить -12.5 в представлении дополнения 2

12.5:->> 01100.1

дополнение 2(01100.1):->>10011.1

проверьте ans, проверив свойство взвешенного кода представления дополнения 2(Вес MSB - ve). получим -16+3+.5=-12.5