2進数とか10進数、自然数(正の整数)の変換とか表現の仕方はわかったのですが、負の数はどのように表現するかが疑問です。
結論、2進数で負の数を表現するときに必要なのが2の補数です。
補数とは、元の数と加えるとちょうど繰り上げになる数のことで、補数表現を利用することで「-(マイナス)」記号を使わずに引き算を行うことができます。
今回の記事では、補数の中でも2進法の引き算や負の数を表現するときに使う、「2の補数」や「1の補数」に付いてわかりやすく解説しますので基本情報技術者試験の学習や、IT資格の勉強をしている人に役立つはずです!
そもそも「基数とは?」「2進数とは?」と疑問の方はこちらの記事を読んで理解してください!
基本情報技術者対策おすすめ講座
BizLearnで科目A試験(旧午前試験)免除!
- 累計受講者数7,429万人以上のネットラーニングが提供するオンライン講座
- 科目A試験を免除できる数少ない認定講座!
- 指導者があなたに一人専属でついてくれて質問し放題で挫折しない!
Udemyで本よりお得に試験対策!
- 複数の基本情報技術者試験講座の中から自分に合った講座が選べる
- SALE狙いで圧倒的コストパフォーマンス
- 買い切り型なのでSALEで買っておいて後で勉强もOK!
STUDYing でスキマ時間で試験合格を目指す!
- スマートフォン1つで動画も問題もテキストも模試も学習できる
- 通勤通学時間などのスキマ時間で学習できる
- 36,800と安価に受講が可能
2の補数とは?2進数で負の数をどう表現するかわかりやすく解説!
基数の足し算や引き算を行う前に知っておきたい表現方法に補数があります。
補数には1の補数とか2の補数があり、コンピュータによって異なり、1の補数を使うコンピュータと、2の補数を使うコンピュータがあります。
補数を使うと、引き算を足し算で表すことができます。
補数とは?
補数とは元の数にある数を足すと位が繰り上げになるような数のこと。
例えば3桁で表していた数字がちょうど4桁になる数。
例えば以下。
- 10進数で3の補数は? ⇒ 3 + 7 = 10で繰り上げになるので7が補数
- 10進数で54の補数は?⇒ 54 + 46 = 100で繰り上がるので46が補数
この補数を2進数で使うことで、2進数の負の数を表現できるようになります。
補数と減基数
補数は元の数に加えることでちょうど繰り上げになる数のことですが、その一歩手前、ぎりぎり繰り上げにならない最大の数を減基数と呼びます。
先ほどの例で説明すると以下。
- 10進数で3の補数表現
⇒ 3 + 7 = 10で繰り上げになるので7が補数
⇒ 3+ 6 = 9 でギリギリ繰り上げにならないので6が減基数 - 10進数で54の補数表現
⇒ 54 + 46 = 100で繰り上がるので46が補数
⇒ 54 + 45 = 99でギリギリ繰り上げにならない45が減基数
n進数の補数表現にはnの補数とn-1の補数が存在する
n進数にはnの補数とn-1の補数が存在します。
例えば、10進法では、10の補数と9の補数が存在しており、10の補数は先ほど紹介した通り繰り上がる最小の数で、9の補数は減基数のことです。
この記事では2の補数について詳しく解説しますが、2の補数は2進数で使う補数で、3進数の時の減基数です。
補数と聞いたら、合わせたら繰り上げる数だな!と覚えておきましょう!
補数を使う場面とは?補数には何ができる?
補数の意味はなんとなく分かったけど、いつ使うの?
補数を利用する一番の目的は「-」の記号を使わずに負の数を表現をしたいときです。
例えば、1024 - 130 = 894 の計算をしたいとします。
「-」の記号が使えない場合この計算を足し算で行う必要がありますが、補数を利用すると足し算で計算できるようになるのです。
まずは130の補数を考えます。
130の補数は、1000 - 130 = 870 です。
先ほどの計算で-130だったのを+870に変換してみまると、1024 + 870 = 1894
よって一番左の1を取り除くと、本来の答えである894になりますよね。
このように、「-」を使わずに補数で足し算をして、最上位の1を捨てると引き算と同じ答えになるのです。2進数では個の補数表現を利用して負の数を表現します。
2進数の1の補数と2の補数をわかりやすく
2進数の1の補数と2の補数の違いはそれぞれ基数を使用するのか減基数を使用するのかという点だけであり、基本となる考え方は同じです。
- 1の補数→2進数である元の数とこの補数を足し合わせると繰り上がるギリギリとなる数 ⇒ 全部1になる
- 2の補数→ちょうど繰り上がる数 ⇒ 一桁増えて1000000・・・となる
引き算をするときや、負の数を表すときに使うので覚えておきましょう!
2進数の1の補数の求め方は?
2進数の1の補数の求め方は実はすごく簡単で、結論から伝えると「0と1を入れ替えるだけ」です。
例えば、「1001101」の1の補数を求める場合、繰り上がるギリギリ手前なので、桁数は一緒ですべて1煮るので「1111111」になればいいのです。
1111111 - 1001101 = 0110010
すなわち、1001101 の1の補数は0110010となります。
縦に並べるとわかりやすい
- 1001101
- 0110010
元の数の1と0を入れ替えたら1の補数になります!
2進数の2の補数の求め方は?
続いて2進数の2の補数の求め方は、10進数の10の補数と9の補数の時と同じように考えることができるため、「1の補数に1を加えた数」です。
先の例と同じく「1001101」の2の補数を求める場合、一桁増えて繰り上がるので、10000000 - 1001101 で補数は求めることができます。
10000000 - 1001101 = 0110011
すなわち、1の補数0110010に1を加えたら2の補数になります。
- 元の数: 1001101
- 1の補数:0110010
- 2の補数:0110011
元の数の1と0を入れ替えたら1の補数になり、1の補数に1を加えると2の補数になる!
まとめ
今回は2進数などの基数を使って負数を表す方法についてまとめました!
基本情報技術者試験を合格したい方は2の補数はこれからも頻繁に出題されているので、しっかり抑えていきましょう。
本記事のまとめ
- 負数を表す時は2の補数を使う!
- 2の補数を使うと引き算を足し算で表すことができる!
- 足し算はそのまま、引き算は負数になりそうなら補数を使う!
- 掛け算・割り算は、論理シフトと算術シフトを使う!
]]>