Как представить отрицательное число с дробью в дополнении 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

Другие вопросы по тегам