8進数の各桁に8のべき乗の重み(1, 8, 64, 512, ...)を掛けて全部足すと10進数になります。逆変換と対をなす機械的な操作です。
8進数 → 10進数とは、0〜7 だけを使う 8進数の値を、私たちが普段使う 10進数の値に翻訳する操作です。各桁に8 のべき乗の重みを掛けて全部足すだけ。
たとえば77(8進) = 7×8 + 7×1 = 63(10進)。111(8進) = 1×64 + 1×8 + 1×1 = 73(10進)。
手順:
・① 各桁の重み(右から 1, 8, 64, 512, ...)を書き出す
・② 各桁の数字に対応する重みを掛ける
・③ それらを全部足す
755 (8進) を変換する例:
・桁の重み: 64, 8, 1
・各桁: 7, 5, 5
・寄与: 7×64=448, 5×8=40, 5×1=5
・合計: 448 + 40 + 5 = 493
8のべき乗を覚える:
・8⁰ = 1, 8¹ = 8, 8² = 64, 8³ = 512, 8⁴ = 4096
正攻法は「各桁 × 8のべき乗の総和」ですが、もっと速く解ける小ワザがいくつかあります。
① 2進数経由: 8進1桁を2進3桁に展開して連結し、最後に2進→10進。重みが 1, 2, 4, 8, 16, 32, 64... と覚えやすいので、2進数の方が暗算しやすいケースが多い。
例: 77(8) を変換
77(8) → 111 111 (2進数に展開)
= 32+16+8+4+2+1 = 63
② ホーナー法(左から計算): 各桁を順次「×8して次の桁を足す」だけで計算できます。重みを覚えなくていいのが利点。
例: 755(8) を変換
((7 × 8) + 5) × 8 + 5
= (56 + 5) × 8 + 5
= 61 × 8 + 5
= 488 + 5 = 493
③ UNIX権限はそのまま覚える: chmod 755 のような頻出値は10進数に直さず、8進数 → ビット → rwx で読む方が直感的です。
・7 = 111 = rwx(全権限)
・5 = 101 = r-x(読み実行)
・4 = 100 = r--(読みのみ)
使い分けのポイント: 桁数が少ない(2〜3桁)なら直接重み計算が速いですが、4桁を超えるならホーナー法や2進数経由のほうがミスが少なくなります。