As a start, observe what happends if we add ~b (the 1's complement of
b) to b:
b: 0000 0000 0000 0000 0000 0000 0010 1001
~b: 1111 1111 1111 1111 1111 1111 1101 0110
---------------------------------------
1111 1111 1111 1111 1111 1111 1111 1111
All 1's. This is not what we want. But if we add the value 1 to this,
we get 0:
Carry 11111 1111 1111 1111 1111 1111 1111 111
1111 1111 1111 1111 1111 1111 1111 1111
0000 0000 0000 0000 0000 0000 0000 0001
---------------------------------------
0000 0000 0000 0000 0000 0000 0000 0000
So
b + ~b + 1 = 0
But this means we can take the representation ~b + 1 for -b.
~b: 1111 1111 1111 1111 1111 1111 1101 0110
1: 0000 0000 0000 0000 0000 0000 0000 0001
---------------------------------------
~b + 1: 1111 1111 1111 1111 1111 1111 1101 0111
~b + 1 is called the 2's complement of b.
Check that the two's complement of b added to b is 0:
Carry bits: 11111 1111 1111 1111 1111 1111 1111 111
b: 0000 0000 0000 0000 0000 0000 0010 1001
~b+1: 1111 1111 1111 1111 1111 1111 1101 0111
---------------------------------------
0000 0000 0000 0000 0000 0000 0000 0000