2010-10-07 2 views
5

Используя шесть бит один и представительство дополнения двоек я пытаемся решить следующую проблему:Сложение и вычитание двоичного дополнение

12 - 7 

Теперь я взять 12 в двоичном и 7 в двоичной системе первого.

12 = 001100 - 6 bit 
7 = 000111 - 6 bit 

Тогда я бы перевернул бит для дополнения двух и добавил один?

12 = 110011 ones complement 
    + 1 
    ------- 
    001101 

7 = 111000 ones complement 
    +  1 
    --------- 
     111001 

затем добавьте эти два дополнения вместе

001101 
+111001 
------- 
1000110 = overflow? discard the last digit? If so I get 5 

Теперь, если у меня есть ряд как

-15 + 2 

Я бы тогда добавить знак величины на MSB, если это ноль ?

нравится:

-15 = 001111 6 bit 

бы добавить 1 в конце здесь, прежде чем я флип биты?

= 101111 
+0

Дополнение, а не комплимент. – titaniumdecoy

ответ

13

Использование двух дополнений для представления отрицательных значений имеет то преимущество, что вычитание и добавление одинаковы. В вашем случае вы можете думать о 12 - 7 как 12 + (-7). Следовательно, вам нужно всего лишь найти комплемента представление этих двух по -7 и добавить его к +12:

12 001100 
-7 111001 -- to get this, invert all bits of 7 (000111) and add 1 
---------- 
5 1000101 

Затем отбрасывать перенос (указывает на переполнение), и у вас есть результат: 000101 который равен 5, как ожидалось.

Для вашего примера -15 + 2, просто следовать той же процедуре, чтобы получить комплемента представление в двоек -15:

15 001111 
    110000 -- inverted bits 
    110001 -- add 1 

Теперь сделайте добавление, как обычно:

-15 110001 
    2 000010 
----------- 
res 110011 

Чтобы увидеть, что res действительно равен -13, вы можете видеть, что он отрицательный (MSB set). Для величины, конвертировать в положительную (инвертировать биты, добавить 1):

res 110011 
    001100 -- inverted bits 
    001101 -- add 1 

Следовательно, величина равна 13, как ожидалось.

+0

Почему мне нужно только найти представление дополнений двух -7 и добавить его в +12: ???? как я знаю, когда использовать комплимент twos? Благодарю вас BTW – 2010-10-07 02:12:27

+1

Дополнение (и дополнение к этому вопросу) - это средства для представления отрицательных чисел. Поскольку +12 не является отрицательным числом, вы можете использовать его как есть. – Schedler

+0

Большое вам спасибо. Я думаю, все ясно. – 2010-10-07 03:26:27

2

№. Алгоритм для дополнения двух не изменяется в зависимости от того, где отрицательное значение.