ビットシフトとビット反転及び加算器だけで四則演算を実現するため、1の補数と2の補数を求めたうえで符号付き数値表現を用いて負の数を求める。
2進数に対し、すべての桁をビット反転(0の場合は1、1の場合は0)に変換する。
1の補数に対し、+1する。
ビット反転だけでは正の数か負の数かの判断がつかないので上位1ビットを0は正の数、1は負の数とする符号ビットとし、正の数と負の数を識別する。
5 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | ||
---|---|---|---|---|---|---|---|---|---|
1の補数 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 各桁をビット反転 | |
2の補数 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1を加算する | |
負の数 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 最上位ビットに負の数を示す1をセット |
10進数 | 2進数 |
---|---|
127 | 01111111 |
126 | 01111110 |
… | … |
2 | 00000010 |
1 | 00000001 |
0 | 00000000 |
-1 | 11111111 |
-2 | 11111110 |
… | … |
-126 | 10000010 |
-127 | 10000001 |
-128 | 10000000 |