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$

2 Answers 2

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.

$\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.

$\endgroup$

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.