Tutorial: Signed Integers

In mathematics, the additive inverse of a number n is the value, when added to n, produces zero. Here are a few examples, expressed in decimal:

6 + –6 = 0

0 + 0 = 0

–1 + 1 = 0

Programs often include both subtraction and addition operations, but internally, the CPU really only performs addition. To get around this restriction, the computer uses the additive inverse. When subtracting A – B, the CPU instead performs A + (–B). For example, to simulate the subtraction of 4 from 6, the CPU adds –4 to 6:

6 + –4 = 2

 

Binary Two’s Complement

When working with binary numbers, we use the term two’s complement to refer to a number’s additive inverse. The two’s complement of a number n is formed by reversing n’s bits and adding 1. Here, for example, n equals the 4-bit number 0001:

N: 0001
Reverse N: 1110
Add 1: 1111

The two’s complement of n, when added to n, produces zero:

0001 + 1111 = 0000

It doesn’t matter how many bits are used by n. The two’s complement is formed using the same method:

N = 1 00000001
Reverse N: 11111110
Add 1: 11111111
N = 1 0000000000000001
Reverse N: 1111111111111110
Add 1: 1111111111111111

 

Here are some examples of 8-bit two’s complements:

n(decimal) n(binary) NEG(n) (decimal)
+2 00000010 11111110 –2
+16 00010000 11110000 –16
+127 01111111 10000001 –127