represent negative number with 2' complement technique?

ipkiss picture ipkiss · Feb 7, 2012 · Viewed 45.4k times · Source

I am using 2' complement to represent a negative number in binary form

Case 1:number -5

According to the 2' complement technique:

Convert 5 to the binary form:

00000101, then flip the bits

11111010, then add 1

00000001

=> result: 11111011

To make sure this is correct, I re-calculate to decimal:

-128 + 64 + 32 + 16 + 8 + 2 + 1 = -5

Case 2: number -240

The same steps are taken:

11110000

00001111

00000001

00010000 => recalculate this I got 16, not -240

I am misunderstanding something?

Answer

Spencer Uresk picture Spencer Uresk · Feb 7, 2012

The problem is that you are trying to represent 240 with only 8 bits. The range of an 8 bit signed number is -128 to 127.

If you instead represent it with 9 bits, you'll see you get the correct answer:

011110000 (240)

100001111 (flip the signs)
+
000000001 (1)

=

100010000

=

-256 + 16 = -240