【基本情報】第3回 補数について【試験対策】

お疲れ様です。
うみんちゅ(@u_mintyu)です。

基本情報技術者の試験対策 第3回は【補数】について解説します。
※前回はこちら

聞いたこともない単語だと思いますが、基本情報技術者試験では非常に重要です!

 
I太郎
小難しい単語ばっかり
T之助
基本情報の前半はコンピュータの基礎演算が頻出するので、理解しておいた方がいいですよ
・基本情報技術者を取得したい人
・参考書を読んでもよくわからない人
・コンピュータの基礎を知りたい人

補数とは

補う数と書いて補数、補数とは目標に辿り着くまでに必要な数です


あまりピンときませんよね

例えば、100万円の売り上げ目標があったとしましょう


現在、80万円まで頑張って売り上げることに成功しました!

目標に到達するには、あといくら必要でしょうか?


100-80=20なので、20万円ですよね。

つまり、80万円を100万円にするためには20万円補えばいいということになります。

この場合の「20万円」が補数です。

コンピュータ内部では補数を利用して計算が行われています。

I太郎
目標値がないと補数も何かわからないよね?
T之助
ここで進数の登場です、各進数の桁上がりを目標値として考えます。

補数はどう利用されているのか

コンピュータ内部では、1と0しか存在していないことはもうお分かりですよね。

さらに1と0だけで計算をするときには、引き算(減算)を使いません。

I太郎
引き算を使わなきゃ計算できないじゃん!
T之助
引き算ではなく、全て足し算(加算)で表現するのですよ

「10-6=4」をコンピュータでは足し算で表現します。
「10+(-6)=4」ということです。
ここで登場した(-6)を負の数と呼びます!

多くのコンピュータでは、演算回路を単純にするために、補数を使って負の数を表現しているのです。

10進数の補数

具体的な補数の求め方を解説します。

10進数には、「9の補数」と「10の補数」の2種類があります。
2つの補数にどのような違いは以下の通りです。

桁があがるまでに必要な数=10の補数

桁があがる前の最大値まで必要な数=9の補数

 
T之助
具体的な例をだしましょう、123「10の補数」は877です。
I太郎
123が1000になるために必要な数ってことだね、1000-123=877だ!
T之助
123の「9の補数」は876ですが、理由はわかりますか?
I太郎
桁上がりする前の最大値だから…999-123=876ってことだね!?
T之助
その通りです!よくできました!

2進数の補数

補数の原理を理解したところで、実際にコンピュータ計算に使用される2進数の補数を解説します。


※2進数は基本的に8bitで表現されるので、0は「00000000」となります。


2進数について復習したい人は以下の記事をどうぞ!↓↓

わかりやすくするために、4桁にしてみましょう

0000(2進数で0を表現した4桁)

2進数で「5」を表現した場合を例にします。

0101

それでは、補数をみてみましょう!
10進数と同じように、2種類の補数が存在します。

全ての進数には2種類補数があり、N進数の場合「N-1の進数」と「Nの補数」が存在します

0101の補数

【1の補数】
 1111(桁上がり前の最大値)になるために必要な数


 0101
1010
ーーーーーー
 1111
      なので、【1の補数】は1010です。

【2の補数】
 10000(桁上がり後)になるために必要な数

 0101
101
ーーーーーー
10000  
    なので、【2の補数】は1011です。

I太郎
あれ?1の補数は元の2進数を反転させた数字になってる
 
T之助
よく気づきましたね!ちなみに、2の補数は「1の補数に1を加えた数字」です
1の補数=ビットを反転させる
2の補数=1の補数に1を加える

2の補数を「負の数」として扱うことで、加算計算をしているのです。

まとめ

基本情報ではこの補数計算の問題がおなじみです。
序盤の基本問題として必ず出題されるので、しっかり覚えておきましょう!

補数の考え方は実際のIT現場でも活用されているので、覚えておいて損はないですよ!

それでは皆さん、よいITライフを!

最新情報をチェックしよう!