【応用情報】 基礎理論-補数1
数値表現(1)<補数>
【補数】
補数とは、ある数が、ある基準となる数となるために加える数。
・・・って相変わらず言葉で書いても意味不明だな。
入社当初はなんとなく暗記で済ませたものだ(^^;)
数式で説明すると
a + x = b
で、xはaのbに対する補数と言う。
10進数の例からあげてみると、4の10に対する補数は6ってこと。
これもわかるようなわからないような微妙な表現。
ここから本題。
補数には以下の2つがある。
(1) その桁で最大の数になる値
(2) 次の桁に繰り上がるための値
上記(1), (2)は、あるn進数において以下のように表現する。
(1) n-1の補数
(2) nの補数
例えば、2桁の10進数では以下のようになる。
(1) 9の補数:その数が 99になるための値
(2) 10の補数:その数が100になるための値
具体的に例をあげると、以下のようになる。
(1) 2桁の10進数「33」の「 9の補数」は、 99 - 33 = 「66」
(2) 2桁の10進数「33」の「10の補数」は、100 - 33 = 「67」
さて、情報処理試験で出題されるのは2進数の補数である。
2進数も同じ考え方でいける。
例えば、
(1) 4桁の2進数「1101」の「1の補数」は、 1111 - 1101 = 「0010」
(2) 4桁の2進数「1101」の「2の補数」は、10000 - 1101 = 「0011」
と表現できる。
ここまで理解して、ようやく教科書的(一般的)な説明が理解できる。
●ある2進数の1の補数は、その数を反転した値である
→全部の桁を1にすればいいから
●ある2進数の2の補数は、その数の1の補数に1を加えた値である
→繰り上げて一つ桁をあげればいいから
そもそもなんで1の補数、2の補数って2つあるのか?
そんな疑問はようやく無くなりましたね。
[参考:補数,シフト演算,浮動小数点数]
http://software.nikkeibp.co.jp/software/special/mind/mind76.html
The comments to this entry are closed.
Comments