COMPLEMENT
1の補数・2の補数のやり方
補数は、コンピュータが負の数を扱うために使われる考え方です。手順はシンプルで、「反転」と「+1」がポイントです。
先に練習したい方:
→ 無料の補数を開く
→ 無料の補数を開く
1の補数とは?
1の補数は、2進数の0と1をすべて反転したものです。
元の値:10110010
1の補数:01001101
2の補数とは?
2の補数は、1の補数に1を足して求めます。
① 0と1を反転
10110010 → 01001101
10110010 → 01001101
② 1を足す
01001101 + 1 = 01001110
01001101 + 1 = 01001110
したがって、10110010 の2の補数は 01001110 です。
負の10進数を2の補数で表す
たとえば、8bitで -13 を表してみます。
① 13を2進数へ
00001101
00001101
② 0と1を反転
11110010
11110010
③ 1を足す
11110011
11110011
したがって、8bitで -13 は 11110011 です。
なぜ2の補数を使うの?
2の補数を使うと、引き算を専用回路で処理せず、足し算と同じ仕組みで扱いやすくなります。そのため、コンピュータの符号付き整数表現で広く使われています。
よくあるミス
- 1の補数で止めてしまい、最後の +1 を忘れる
- bit数を意識せず、先頭の0を落としてしまう
- 負数表現で、元の正の値を2進数にするところから間違える
2の補数を作る手順
- 正の値を指定bit幅の2進数で表します。
- 0と1をすべて反転して1の補数を作ります。
- その値に1を加えると2の補数になります。
具体例:8bitで-5を表す
+5 = 00000101
反転 → 11111010
+1 → 11111011
したがって8bitの2の補数表現で -5 は11111011です。
反転 → 11111010
+1 → 11111011
したがって8bitの2の補数表現で -5 は11111011です。
2の補数から値を読む
最上位bitが1なら負数として扱う問題では、反転して1を加えることで絶対値を確認できます。bit幅が変わると表現範囲も変わるため、問題文のbit数を必ず確認します。
よくある間違い
反転しただけで止めない
反転だけは1の補数です。2の補数ではさらに1を加えます。また桁あふれは指定bit幅の外として扱います。
反転だけは1の補数です。2の補数ではさらに1を加えます。また桁あふれは指定bit幅の外として扱います。
試験でのポイント
n bitの2の補数表現の範囲は -2n-1 〜 2n-1-1 です。8bitなら -128〜127 になります。
2の補数とは?
2の補数は、コンピュータで負の整数を表現するときによく使われる方法です。決められたbit幅の中で正負の整数を扱いやすく、加算回路を利用して減算も処理できます。
2の補数の求め方
負の値を作る基本手順は「正の値を2進数で表す → 0と1を反転する → 1を加える」です。
8bitで-5を表す
+5:00000101
反転:11111010
1を加える:11111011
したがって -5 は11111011です。
+5:00000101
反転:11111010
1を加える:11111011
したがって -5 は11111011です。
1の補数と2の補数の違い
0と1を反転しただけの値が1の補数です。そこへさらに1を加えたものが2の補数です。「反転したところで答えにしてしまう」のが代表的なミスです。
2の補数から10進数へ戻す方法
負数として扱う2進数は、0と1を反転して1を加えることで絶対値を確認できます。問題では最初に8bit、16bitなどのbit幅を確認してください。
8bitの2の補数で表せる範囲
n bitの2の補数表現では、一般に -2n-1 から 2n-1-1 までを表せます。8bitなら-128〜127です。
手順を覚えたら反復練習
1の補数・2の補数・負の10進数の2の補数表現を自動出題します。
1の補数・2の補数・負の10進数の2の補数表現を自動出題します。