Adding and subtracting two's complement

依然范特西╮ 提交于 2019-12-18 03:41:53

问题


Using six-bit one's and two's complement representation I am trying to solve the following problem:

12 - 7 

Now, i take 12 in binary and 7 in binary first.

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

Then, would I then flip the bit for two's complement and add one?

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

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

then, add those two complement together

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

Now, if I have a number like

-15 + 2

I would then add a sign magnitude on the MSB if it's a zero?

like:

-15 = 001111 6 bit

Would I add a 1 at the end here before I flip the bits?

  = 101111

回答1:


Using two's complement to represent negative values has the benefit that subtraction and addition are the same. In your case, you can think of 12 - 7 as 12 + (-7). Hence you only need to find the two's complement representation of -7 and add it to +12:

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

Then discard the carry (indicates overflow), and you have your result: 000101 which equals to 5 as expected.

For your example of -15 + 2, simply follow the same procedure to get the two's complement representation of -15:

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

Now do the addition as usual:

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

To see that res indeed equals -13, you can see that it is negative (MSB set). For the magnitude, convert to positive (invert bits, add 1):

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

Hence the magnitude is 13 as expected.




回答2:


No. The algorithm for two's complement doesn't change based on where the negative value is.



来源:https://stackoverflow.com/questions/3878062/adding-and-subtracting-twos-complement

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!