0
$\begingroup$

How can i perform binary subtraction of two numbers that are already in 2's complement? I have to subtract 01010011 from 10100110,both numbers are in 2's complement. I know that 10100110 is -90,and 01010011 is 83,so the result should be -173. So if i use 8 bits that means that there's overflow. But i don't get how can i perform the subtraction when both the numbers are in 2's complement. If i just perform the subtraction i get the same number 01010011. How do i show the result and that there's overflow?

$\endgroup$
1
$\begingroup$

You cannot represent –173 using 8 bits, since the range is –128 to 127.

To subtract two numbers in two's complement, you use the identity $a - b = a + (-b)$. In your case, $a = 10100110$, $b = 01010011$, and $-b = 10101101$. Adding $a$ and $-b$, there is overflow, so you know that the number is outside the range.

| cite | improve this answer | |
$\endgroup$
1
$\begingroup$

You need to subtract 01010011 from 10100110.

10100110 - (01010011)

So find the 2's complement of 01010011 which is 10101101 and just add it to 10100110

 01011000   <=carry bits
        
 10100110 
+10101101
----------
101010011 <= Result, but the extra 9th bit to the left of MSB is stored outside a register in a special carry out flip-flop

Now the carry-in and carry out of the MSB of the 8 bit register are different and so the result is overflow... (the carry in is 0 ,above the two 1's in the MSB and the carry out is 1 which is left to the MSB in the result)

If and only if the XOR of the carry-in and carry-out of the MSB is 1 then overflow.

| cite | improve this answer | |
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.