整数の補数表現について
概要
コンピュータにおける符号あり整数の表現方法をまとめている。
動機
補数表現の意義がようやく理解できたので覚え書き。
内容
コンピュータで符号あり整数を表現する方法として考えられるのは、
1、先頭ビットを符号ビットにする
2、1の補数を利用する(減基数の補数)
3、2の補数を利用する(基数の補数)
の3つであるが、一般的に利用するのは2の補数である。
ここでは8bitのビット列で整数を表現することを例にして考える。
1、先頭ビットを符号ビットにする
符号ビット(1bit) | 絶対値(7bit) |
この場合を表現できるが、とが同じものであるにもかかわらず、、の2通りが存在してしまうという問題がある。
2、1の補数を利用する
これは元の正の数をビット反転することによって負の数を表す表現方法。
10進数のを、2進数で表現すればとなる。これをビット反転してと割り当てることにする。
これで符号ビットを使わずに負数を表現できるようになったわけだが、問題もあって、例えば次のような計算を考える。
これはどちらも答えがになるわけであるが、1の補数を用いた計算では
←5-5=0
←5+(-5)=0
と2つのビットが存在してしまう。
3、2の補数を利用する
作業工程は1の補数と似ているが、とてもすごい効力がある。
負数を表すときは、ビット反転ののち値をすることにする。
これに従えば、10進数のは、これをビット反転したのち+1して、
と表される。
これで先ほどの と を計算する
←5-5=0
←5+(-5)=0
ここで桁あふれしたビットを無視しすれば、
となり、2の補数で0の重複を解決できたことがわかる。
またここで注目すべき点は、加算で減算を扱うことができたということで、加算回路のみで加減算を行えたという点である。
つまり、2の補数を使って負数を表現することによって回路規模の縮小が図れる。これは2の補数表現が広く使われる理由の一つである。
まとめ
2の補数表現を利用することで整数の加減算を加算回路のみで行うことができる。