3.2. マイナスの値について(2の補数)
パソコンの数値表現には
”符号無し整数”(マイナスの値が存在しない)と、
”符号付き整数”(マイナスの値が存在する)
”浮動小数点”
”指数”
等があります。
ここでは符号付き整数におけるマイナスの値について説明します。
パソコンの世界では、マイナス(−)の値の表現について、「2の補数」によって
表現します。
この手法を採用する理由は【減算(マイナス計算)を加算(足し算)で処理したい】からなのです。
2の補数表現というと難しそうに聞こえます。
この”2の補数”の説明は他に譲るとして、マイナス計算について(16ビットの場合を例として)下に
簡単に説明したいと思います。
普通の数値は前ページで説明した様に、ビットの固まりで表します。
(数値以外の(文字)の表現については改めて説明します)
(例) ”3”
(例)”4”
マイナスの値の作り方。
「元の値のビット状態を反転して ”1”を足す」
(例) ”−3”
上記”3”のビットを反転し、”1”を足す。
(ビット反転)
+ (”1”を足す)
= (”−3”のビット表現)
(例) ”−4”
(ビット反転)
+(”1”を足す)
= (”−4”のビット表現)
では検証してみましょう。
検証1
・3+(−3)=0となるか?
(+3)
+ (−3)
=
計算は”1 0000 0000 0000 0000”
となりますが、16ビットしかデータの入る”マス”はないので、先頭の”1”は消えてなくなります。
結果:”3+(−3)=0”となりました。
検証2
・4+(−3)=1となるか?
(4)
+ (−3)
=(1)
計算は”1 0000 0000 0000 0001”
となりますが、16ビットしかデータの入る”マス”はないので、先頭の”1”は消えてなくなります。
結果:”4+(−3)=1”となりました。
検証3
・3+(−4)=−1となるか?
(3)
+ (−4)
=(−1)
(”1”のビット反転+”1”)
以上、 「元の値のビット状態を反転して ”1”を足す」(2の補数表現)事で得たマイナスの値によって、
引き算も足し算として計算できました。
【表現桁数について】
符号付き整数の表現では、先頭ビットは”+”、”−”の判定として使用します。
従って表現できる桁数=15ビットとなり、
”−32767”〜”+32767”となります。
符号なし整数(マイナス値が存在しない)場合、
表現できる桁数は16ビットMAXとなり、
”0〜65535”となります。
同じ”1111 1111 1111 1111”でも
符号付き整数値の扱いでは”−1”であり、
符号なし整数値の扱いでは”+65535”になります。
どちらの表現で数値を使用するかは、実行するプログラム命令に依存します。