開発ツール
2進数・8進数・16進数の変換方法と基礎知識
コンピュータの世界では10進数以外の記数法が頻繁に使われます。メモリアドレス、カラーコード、ファイルパーミッションなど、プログラミングにおいて2進数・8進数・16進数の知識は不可欠です。この記事では、各進数の仕組みと変換方法を解説します。
進数とは何か
進数(基数)とは、数を表現する際に使う数字の種類の数です。10進数は0〜9の10種類、2進数は0と1の2種類、16進数は0〜9とA〜Fの16種類を使います。
各進数の対応表
| 10進数 | 2進数 | 8進数 | 16進数 |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
| 16 | 10000 | 20 | 10 |
| 255 | 11111111 | 377 | FF |
2進数の仕組み
2進数は各桁が2のべき乗を表します。例えば1011は:
1 0 1 1
│ │ │ └── 2⁰ = 1 × 1 = 1
│ │ └─────── 2¹ = 2 × 1 = 2
│ └──────────── 2² = 4 × 0 = 0
└───────────────── 2³ = 8 × 1 = 8
合計 = 11(10進数)16進数とその使われ方
16進数はプログラミングで非常に多く使われます:
- カラーコード:
#FF5733= R:255, G:87, B:51 - メモリアドレス:
0x7FFF5FBFF8C0 - 文字コード:Unicode
U+3042(あ) - ビットマスク:
0xFF= 255 = 11111111
JavaScriptでの進数変換
// 10進数 → 他の進数(文字列)
const num = 255;
num.toString(2); // "11111111" (2進数)
num.toString(8); // "377" (8進数)
num.toString(16); // "ff" (16進数)
// 他の進数(文字列)→ 10進数
parseInt("11111111", 2); // 255
parseInt("377", 8); // 255
parseInt("FF", 16); // 255
// リテラル表記
const bin = 0b11111111; // 2進数リテラル = 255
const oct = 0o377; // 8進数リテラル = 255
const hex = 0xFF; // 16進数リテラル = 255よくある質問
なぜコンピュータは2進数を使うのですか?
コンピュータの電子回路はオン/オフ(電圧の高/低)の2状態で動作するため、0と1の2値で表す2進数が最も自然な数の表現方法です。
なぜ16進数がよく使われるのですか?
16進数の1桁は2進数の4桁(4ビット)に対応するため、バイト(8ビット)を2桁で簡潔に表現できます。例えば11111111はFFのたった2文字です。
8進数はどこで使われますか?
主にLinuxのファイルパーミッション(chmod 755 など)で使われます。3桁の8進数でowner/group/othersの権限を表現します。