簡単なケース
正の数の表現
桁数が固定された2進数の加算を考える。たとえば4桁(4 bits)の場合に1ずつ加える。
負の数の表現
一方、-1は0から1を引いた値として計算される。最初の計算だけ、上位桁から1を借りてこられるとして、以下の様な計算になる。
上の足し算の結果と下の引き算の結果をを見ると、以下のことがわかる。
- 正の数(0~7)と負の数(-8~-1)の合計15個で、4ビットの全てのパターンが網羅されている
- 正の数の最上位ビットは0、負の数の最上位ビットは1
引き算と補数の足し算
たとえば上の例で、正の数と負の数を加えてみる。
2の補数を計算したときに0からその数を減じているので、当然の結果ではある。いずれにしても、負数を2の補数で表現することで、減算を加算で代えることができる。
2の補数を得る方法
2の補数を得るのに、いちいち0から引かなくても、以下の方法で可能。
- 整数のビットパターンを反転
- 1を加える
4ビットの例では以下のとおり。
すなわち、固定長の整数の場合、ビット反転と加算機能があれば、減算を実現できる。
典型的なビット数の整数範囲
8ビット
byte型でよく見る値。
16ビット
short型でよく見る値。
32ビット
一般的なint型で絶対値が約21億。
64ビット
long型、絶対値が約920京(!)