|
|
|
|
|
|
|
|
|
|
|
|
|
|
Integers: 2's complement |
|
|
|
|
2's complement (2C) may
not be intuitively obvious, but it has nice properties |
|
|
Negation |
|
|
|
|
1. flip all bits |
|
|
|
|
2. add 1 (ignoring any
carry out of the msb) |
|
|
|
Example: 11ten is 01011 in 5-bit
unsigned binary. Call this number B. |
|
|
|
1. flip bits: |
10100 |
|
~B |
|
|
|
2. add 1: |
+ 1 |
|
|
|
|
|
|
|
10101 |
|
-B |
|
|
What do we get if we add
this to the original number? |
|
|
|
|
|
01011 |
|
B |
|
|
|
|
+ |
10101 |
|
+ -B |
|
|
|
|
|
00000 |
|
0 |
|
|
If we negate B (-B)
using 2C and negate again (--B) we get the original value B back. |
|
|
1. flip bits: |
01010 |
|
~(-B) |
|
|
|
2. add 1: |
+ 1 |
|
|
|
|
|
|
|
01011 |
|
B |
|
|
Other ways to do N-bit 2C
negation: |
|
|
|
|
1. Find the rightmost 1
bit, then flip all the higher bits (bits to the left). |
|
|
|
Example: |
|
01011 |
|
|
|
|
|
Rightmost 1 bit is b0 |
|
|
|
|
|
flip bits to the left: |
10101 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|