開発ツール

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進数
0000000
1000111
2001022
3001133
4010044
5010155
6011066
7011177
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F
16100002010
25511111111377FF

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桁で簡潔に表現できます。例えば11111111FFのたった2文字です。

8進数はどこで使われますか?

主にLinuxのファイルパーミッション(chmod 755 など)で使われます。3桁の8進数でowner/group/othersの権限を表現します。

進数変換ツールを使ってみる

2進数・8進数・10進数・16進数をリアルタイムで相互変換。

ツールを開く →