Как представить отрицательное число с дробью в дополнении 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).
В подписанном двойном дополнении старший значащий бит (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
Итак, вы хотите представить -12,5 в представлении дополнения 2
12.5:->> 01100.1
Дополнение 2 (01100.1):->>10011.1
проверьте ответ, проверив свойство взвешенного кода в представлении дополнения 2 (вес MSB равен -ve). мы получим -16+3+.5=-12,5
Вы можете удваивать число снова и снова, пока оно не станет отрицательным целым числом или не достигнет определенного предела, а затем соответственно установить десятичную точку.
-25 это 11100111, поэтому -12,5 это 1110011,1