8進数から10進数への変換

8進数(基数8)を10進数に変換する方法をステップごとに解説。Unix ファイルパーミッションやレガシーシステムにおける8進数の役割も学べます。

Octal (Base 8)Decimal (Base 10)Conversion

詳細な説明

8進数(基数8)は 0 から 7 の数字を使います。現代のコンピューティングでは16進数ほど一般的ではありませんが、Unix/Linux のファイルパーミッションで重要な役割を果たし、一部のレガシーシステムやプログラミングの文脈でも登場します。

ステップごとの例 --- 7524(8進数)を10進数に変換:

  1. 各桁と位置を書き出す: 7(3) 5(2) 2(1) 4(0)
  2. 8のべき乗を掛ける: 7×8³ + 5×8² + 2×8¹ + 4×8⁰
  3. 計算: 7×512 + 5×64 + 2×8 + 4×1
  4. 合計: 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進数のファイルパーミッション値を解釈して、ファイルやディレクトリのアクセス制御を理解し設定します。

Try It — Number Base Converter

フルツールを開く