8進数から10進数への変換
8進数(基数8)を10進数に変換する方法をステップごとに解説。Unix ファイルパーミッションやレガシーシステムにおける8進数の役割も学べます。
Octal (Base 8) → Decimal (Base 10)Conversion
詳細な説明
8進数(基数8)は 0 から 7 の数字を使います。現代のコンピューティングでは16進数ほど一般的ではありませんが、Unix/Linux のファイルパーミッションで重要な役割を果たし、一部のレガシーシステムやプログラミングの文脈でも登場します。
ステップごとの例 --- 7524(8進数)を10進数に変換:
- 各桁と位置を書き出す:
7(3) 5(2) 2(1) 4(0) - 8のべき乗を掛ける:
7×8³ + 5×8² + 2×8¹ + 4×8⁰ - 計算:
7×512 + 5×64 + 2×8 + 4×1 - 合計:
3584 + 320 + 16 + 4 = 3924
したがって 7524₈ = 3924₁₀ です。
Unix ファイルパーミッションにおける8進数:
現代で8進数に最もよく遭遇するのは、Unix/Linux のファイルパーミッションです。コマンド chmod 755 file は8進数表記を使っています:
7 = 111₂--- 所有者: 読み取り + 書き込み + 実行5 = 101₂--- グループ: 読み取り + 実行5 = 101₂--- その他: 読み取り + 実行
各8進数の桁は正確に3ビットに対応し、各ユーザークラスの3つのパーミッションビット(rwx)を完璧に表現します。
プログラミング言語における8進数:
- C/C++ では、8進数リテラルは先頭のゼロで始まります:
0755 - Python 3 では
0oプレフィックスを使います:0o755 - JavaScript のストリクトモードでは
0o755が必要です - C ライブラリ関数
printfは%oで数値を8進数フォーマットします
歴史的背景:
8進数は、PDP-8(12ビットワード)のようにワードサイズが3ビットの倍数であった初期のコンピュータ時代にはより一般的でした。各8進数の桁が3ビットをきれいに表現できたためです。8ビットバイトと 16/32/64 ビットワードが標準になるにつれ、一般的な用途では16進数(1桁あたり4ビット)が8進数にほぼ取って代わりました。しかし、8進数はファイルパーミッションや一部の通信プロトコルに残り続けています。
ユースケース
Linux システム管理者は、0644 や 0755 などの8進数のファイルパーミッション値を解釈して、ファイルやディレクトリのアクセス制御を理解し設定します。