2進数と基数変換をやさしく図解 — 10進・2進・16進の変換と2の補数
「2進数の 1011 って10進でいくつ?」「2の補数って結局なに?」——コンピュータの数の扱いは、桁ごとの重みという考え方をつかめば一気にスッキリします。この記事では、2進数の仕組みから、10進⇔2進⇔16進の変換、負の数を表す2の補数、桁あふれまでを、図と手順で解説します。手を動かすなら 基数変換ツール と 論理回路シミュレータ も合わせてどうぞ。
なぜコンピュータは2進数なのか
コンピュータの中身は電気回路です。電気は「電圧が高い/低い」「スイッチのオン/オフ」という2つの状態を、いちばん確実に・誤りなく区別できます。もし10段階の電圧で0〜9を表そうとすると、少しのノイズで隣の値と間違えてしまいます。だから、状態が2つだけの2進数(0と1)が最も相性が良いのです。私たちがふだん使う10進数は「指が10本」という人間の都合、2進数は「回路の都合」——それだけの違いです。
10進・2進・16進の対応表
まずは0〜15の対応を眺めてください。ここに4桁の2進数=16進数1桁という関係が全部詰まっています。
| 10進 | 2進 | 16進 | 10進 | 2進 | 16進 | |
|---|---|---|---|---|---|---|
| 0 | 0000 | 0 | 8 | 1000 | 8 | |
| 1 | 0001 | 1 | 9 | 1001 | 9 | |
| 2 | 0010 | 2 | 10 | 1010 | A | |
| 3 | 0011 | 3 | 11 | 1011 | B | |
| 4 | 0100 | 4 | 12 | 1100 | C | |
| 5 | 0101 | 5 | 13 | 1101 | D | |
| 6 | 0110 | 6 | 14 | 1110 | E | |
| 7 | 0111 | 7 | 15 | 1111 | F |
16進数では、10〜15を A〜F の1文字で表します。こうすると2進数4桁がちょうど16進数1桁に収まり、長いビット列を短く書けます。
2進数 → 10進数(重みを足すだけ)
10進数の 253 が「100が2個、10が5個、1が3個」であるのと同じように、2進数も桁ごとに重みを持っています。ただし重みは10倍ずつではなく、右から 1・2・4・8・16…と2倍ずつ増えます。1が立っている桁の重みを合計すれば10進数になります。
10進数 → 2進数(2で割り続ける)
逆向きは、2で割って余りを下から読むのが定番です。商が0になるまで割り算を続け、余り(0か1)を最後から逆順に並べると2進数になります。
2進数 ⇔ 16進数(4桁ずつ区切る)
2進数は桁が多くて読みにくいので、実務では16進数でよく表記します(メモリアドレス、色コード #FF8800、MACアドレスなど)。変換は簡単で、2進数を右から4桁ずつ区切り、各かたまりを対応表で1文字にするだけです。
負の数はどう表す? — 2の補数
ここが基本情報の頻出ポイントです。コンピュータには「マイナス記号」がないので、ビットのパターンだけで負の数を表す工夫が必要です。それが2の補数(にのほすう)です。求め方はたった2ステップ。
手順1: すべてのビットを反転(0↔1を入れ替え。これを「1の補数」と呼びます)。
手順2: 1を足す。 これで「2の補数」= その数の符号を反転した表現になります。
なぜこんな回りくどい方法を使うのでしょう? それは、引き算を足し算の回路だけで実現できるからです。8 − 5 は 8 + (−5) と同じ。−5を2の補数(11111011)で用意すれば、あとは普通に足すだけで正しい答えが出ます(あふれた桁は捨てる)。おかげでCPUは「引き算専用の回路」を持たずに済み、ハードウェアが単純になります。
2進数の足し算と桁あふれ(オーバーフロー)
2進数の足し算は10進数と同じ「繰り上がり」で計算します。ただし1 + 1 = 10(0を書いて1繰り上がり)です。決められたビット数(例:8ビット)に収まりきらない繰り上がりが出ることを「桁あふれ(オーバーフロー)」と呼びます。8ビットで 255 + 1 をすると、9桁目があふれて結果が 0 に戻ってしまう——これが「符号なし8ビットは0〜255まで」の理由です。
🧮 手を動かして確かめるなら:10進・2進・8進・16進を相互に一発変換できる基数変換ツールで、この記事の数値を打ち込んで答え合わせができます。さらに、2進数の足し算やビット反転を担うAND・OR・NOT・XORのふるまいは論理回路シミュレータで、入力0/1をクリックしながら体感できます。
基本情報技術者試験ではこう出る
科目Aでは、基数変換(「2進数 1101 を10進数で」)、2の補数(「−6を8ビットの2の補数で表すと?」)、2進数の加算とけたあふれ、16進数⇔2進数が定番です。とくに2の補数は「反転して+1」の手順さえ体に入れれば確実に得点できます。ビットで考える力は、サブネットマスクの計算や論理回路にも直結するので、ここで固めておくと後がラクになります。
よくある質問
Q. 「1の補数」と「2の補数」はどう違うの?
A. 1の補数は「全ビットを反転しただけ」。2の補数は「反転して、さらに1を足したもの」です。現在のコンピュータで負の数を表すのに使われるのは、原則2の補数です(0の表現が1通りに定まる・計算が素直、という利点があるため)。
Q. 8ビットの2の補数で表せる範囲は?
A. −128 〜 +127 です。先頭1ビットを符号に使うぶん、正の側は127までになります。ビット数がnなら範囲は −2ⁿ⁻¹ 〜 2ⁿ⁻¹ − 1 です。
Q. 8進数(0〜7)はどこで使う?
A. Linuxのファイル権限(chmod 755 など)が代表例です。3ビットがちょうど8進数1桁に対応するため、rwx(読み・書き・実行)の3ビットを1桁で表せて便利だからです。権限まわりはchmod計算ツールで確認できます。
まとめ
2進数は「桁ごとの重みが2倍ずつ」——これさえ押さえれば、10進への変換も、2の補数も、16進との行き来もすべて同じ土台の上の話です。2進→10進は重みの合計、10進→2進は2で割って余りを下から、16進は4桁ずつ、負の数は反転+1。手順を覚えたら、ツールと可視化で答え合わせをして定着させましょう。
関連ページ: 基数変換ツール / 論理回路シミュレータ / chmod計算 / サブネットマスクの計算 / 記事一覧