FE EXAM

2進数 → 8進数(右から3桁ずつ束ねる)

2進数 → 16進数では「4桁ずつ」束ねますが、2進数 → 8進数では「3桁ずつ」束ねます。2³=8 だから、2進3桁が8進1桁にちょうど対応します。

INTERACTIVE VISUALIZATION
2進数
8進数
2進数 (入力)
111101101(2)
3桁グループ数
3
8進数 (結果)
755(8)
2進数を入力
プリセット
右から3桁ずつ束ねます。左端が3桁未満なら0を補って3桁に揃え、各グループを 0〜7 の1文字に変換します。
STEP 1: 右から3桁ずつ区切る
1
1
1
= 7
1
0
1
= 5
1
0
1
= 5
STEP 2: 各グループを 0〜7 の1文字に変換
111
7
101
5
101
5
結果
111101101(2)=755(8)
解説

📌
2進→8進変換とは

2進数 → 8進数は、長い 0/1 の並びを 0〜7 の短い表記に圧縮する変換です。桁数が 約1/3に圧縮されるので、読みやすくなります。

たとえば111101101(9桁)を8進数にすると755(3桁)。UNIX のファイル権限 chmod 755 はまさに2進数の rwx の組み合わせから出てきた8進数表記です。

なぜきれいに変換できるかというと、「2進3桁 = 8進1桁」という綺麗な対応があるためです。2³ = 8 なので、2進3桁で表せる組み合わせ(8通り)がちょうど8進1桁(0〜7)と一致します。

🔍
3ビットずつ区切る理由

なぜ「2桁」でも「4桁」でもなく、ちょうど「3桁」で区切るのでしょうか。その答えは2³ = 8 という単純な等式にあります。

2進3桁で表せる組み合わせは「ちょうど8通り」です。
000, 001, 010, 011, 100, 101, 110, 111
これが 0〜7 の 8進1桁とぴったり一対一対応するため、グループ単位で機械的に置き換えるだけで変換が成立します。

2進3桁 ↔ 8進1桁
000 = 0 100 = 4
001 = 1 101 = 5
010 = 2 110 = 6
011 = 3 111 = 7

もし他の桁数だったら?
2桁ずつだと 2² = 4 通り → 4進数になる(8進数にならない)
4桁ずつだと 2⁴ = 16 通り → 16進数になる
つまり「束ねる桁数 = log₂(基数)」の関係。これを覚えておくと、何進数→何進数でも応用できます。

なぜ「右から」なのか? 数の桁の重みは右端が一番低く、左に行くほど高くなります。8進1桁ぶん = 2進3桁ぶんの重みなので、右端から3桁単位で区切ると桁の境目が一致します。左端から区切ると、最下位の重みが揃わず計算が破綻します。

グループ化の手順

実際の変換は3ステップだけです。順番を守れば誰でもミスなく解けます。
① 右端から3桁ずつグループ化
② 左端が3桁未満なら左に 0 を補って3桁に揃える
③ 各グループを 0〜7 の1文字に変換して左から並べる

例1: 111101101 を8進数に変換
右から3桁ずつ: 111 | 101 | 101
111 = 4+2+1 = 7
101 = 4+1 = 5
101 = 4+1 = 5
結果: 755(8)

例2: 11010 を8進数に変換(0埋めあり)
右から3桁: 11 | 010 ← 左が2桁
左に0を補う: 011 | 010
各グループ変換: 3, 2
結果: 32(8)

覚えておきたい対応表(8通り):

2進3桁8進1桁10進
00000
00111
01022
01133
10044
10155
11066
11177

よくあるミス:
左から区切ってしまう(右からが正解。桁の重みが揃わない)
0埋めを忘れる(11010 を「11|010」のまま変換すると、3 ではなく桁数が合わなくなる)
10進数の感覚で「8」を書く(8進1桁の最大は 7、8 は出てこない)

UNIX 権限との関係: 3つのビットがそれぞれ「読み(r=4)/書き(w=2)/実行(x=1)」に対応し、その和が8進1桁の値になります。755 → 111 101 101 → rwx r-x r-x。グループ化の威力を最も体感できる実例です。

関連コンテンツ

2進数 → 8進数 | Vizigo