8進法(八進法)とは|定義・表記法・歴史とコンピュータでの利用
8進法(八進法)の定義・表記法・歴史とコンピュータでの活用をわかりやすく解説。表記例や実用例、文化的背景まで初心者向けに紹介。
8進法とは、8進法のことです。0から7までの数字(桁)を使って数を表します。これは2進法(ベース2)や16進法(ベース16)と同じく位置記数法の一種で、位ごとに8の冪(8^0=1、8^1=8、8^2=64、…)を用います。典型的な表記法には次のようなものがあります:数字の前にoを付けて o04 や o1242 のように書く方法、または 12428 のように右下に小さな8を付けて示す方法です。
定義と基本例
8進法の各桁は0〜7の整数で表され、桁の位置に応じて8の冪を掛けて合計することで10進法の値になります。たとえば、12428 は次のように計算されます:
- 12428 = 1×8^3 + 2×8^2 + 4×8^1 + 2×8^0 = 512 + 128 + 32 + 2 = 674(10進)
逆に10進数674を8進に直すには8で繰り返し割って余りを求め、下から余りを並べます(674 ÷ 8 = 84 余 2 → 84 ÷ 8 = 10 余 4 → 10 ÷ 8 = 1 余 2 → 1 ÷ 8 = 0 余 1)ので 12428 になります。
2進法との対応(ビットとの関係)
8は2の3乗(2^3)なので、1つの8進数字は3ビットに対応します。これにより2進数と相互変換が簡単です。例:12428 を2進に直すと、各桁を3ビットで表して連結します。
- 1 → 001、2 → 010、4 → 100、2 → 010
- したがって 12428 の2進表記は 001010100010 (先頭の不要な0は省略して 1010100010)で、10進の674に対応します。
基本的な算術(例)
8進法同士での加減乗除は10進法と同じ手順ですが、繰り上がりは8で行います。簡単な例:
- 178 + 68 = (10進で 15 + 6 = 21)→ 21 = 2×8 + 5 → 258
コンピュータでの利用例
かつて8進法は主にコンピュータの分野で広く使われました。特にワード長が3ビットの倍数(たとえば12ビット、24ビットなど)のマシンでは、2進数を3ビットずつ区切って人間が見やすくするのに便利だったためです。代表的な例としては古いミニコンピュータ(PDP-8などの12ビット機)や初期のシステムでの使用が挙げられます。
今日でも8進法が使われる場面はいくつか残っています。主な用途:
- Unix系のファイルパーミッション表記(chmodで用いる 755、644 などの八進表現)。各桁は読み取り・書き込み・実行のビット集合を表し、0〜7で表現します。
- 一部のプログラミング言語における数値リテラル(例:伝統的にC言語では先頭が0の数は八進数として扱われることがあり、'\012' のような文字エスケープで八進表記が使われることがある)
- 過去のアセンブリやディスプレイ、システム管理ツールでの表示や入力
しかし、コンピュータのワード長が24ビット→32ビット→64ビットと拡大し、また4ビット単位で扱いやすい16進法が普及したため、現代では16進法の方が利用頻度が高くなっています。
歴史と文化的背景
8進法は数学や計算機の歴史の中で重要な役割を果たしました。機械的・電子的表示装置の設計や当時のワード長に合致したことから採用されることが多かったためです。
また、文化的な数え方として8進法を使う言語や社会も存在します。元の文でも触れられているように、カリフォルニアのユキ語やメキシコのパメアン語など、ある種の言語グループでは8進的な数え方をすることが報告されています。これは、手の指そのものではなく、指と指の間の空間を数える習慣に由来すると考えられています(指の間の区切りが8個分になるため)。
利点と欠点
- 利点:2進数と密接に対応する(1桁=3ビット)ため、当時の機械語や低レベルの表示に便利。表記が短くなり、ビット集合の視認性が上がる。
- 欠点:ワード長が4の倍数(16進法と相性が良い)になった現代のアーキテクチャでは扱いにくい。人間には10進法や16進法の方が馴染みやすい場合が多い。
まとめと実用ヒント
- 8進法は0〜7の数字を使う位置記数法で、各桁は8の冪を表す。
- 2進数とは3ビット単位で天然に対応するため、過去の一部のコンピュータで広く用いられた。
- 現在でもUnixのファイル権限表示や一部のレガシー用途、プログラミングのエスケープシーケンスなどで見かけることがある。
- 数の変換は、8で割る(10進→8進)/各桁を3ビットに変換(8進→2進)する手順で行うと分かりやすい。
8進法と2進法
8進法の数字は、「3ビット」の2進法を採用しています。8進数の各桁は、2進数の3桁と同じです。2進数のグループ化は、右から左に向かって行われます。右から最初の3桁の2進数は、8進数の最後の部分にまとめられ、次の3桁はその次の最後の部分を形成します。
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8進法と10進法
10進法(ベース10)では、8進法の各桁は、その桁の位置から1を引いた8の指数を掛けたものになります。
|
| 所在地 | |||||
| 6 | 5 | 4 | 3 | 2 | 1 | |
| 価値 | 32768 (85) | 4096 (84) | 512 (83) | 64 (82) | 8(81) | 1 (80) |
例:o3425を10進数に
|
|
|
8進法と16進法
8進法が16進法と似ているのは、どちらも簡単に2進法に変換できるからです。8進法が3桁の2進法に相当するのに対し、16進法は4桁の2進法に相当します。また、8進法の数字は「o」で始まり、16進法の数字は「h」で終わります。一方から他方に変換する最も簡単な方法は、2進法に変換した後、他方のシステムに変換することです。
| オクターブ | バイナリー | 16進法 | ||||||||
| 三桁 | 4桁 | |||||||||
| o4 | 100 | 0100 | 04h | |||||||
| o15 | 001 | 101 | 1101 | 0Dh | ||||||
| o306 | 011 | 000 | 110 | 1100 | 0110 | C6H | ||||
| o54253 | 101 | 100 | 010 | 101 | 011 | 0101 | 1000 | 1010 | 1011 | 58ABh |
関連ページ
- 2進法による数値入力
- 16進法の数字システム
- 10進法の数字システム
質問と回答
Q:8進数法とは何ですか?
A:8進数とは、0から7までの数字を使った8進数のことです。
Q:8進法は他の数詞体系とどう違うのですか?
A:8進法は、2進法、16進法と似ています。
Q:8進数はどのように表記するのですか?
A:8進数は、数字の前にアルファベットのoをつけて、o04やo1242のように書きます。また、12428のように、右下に小さな8を付けて書くこともあります。
Q:8進法は主に何に使われていたのですか?
A:かつて8進法は、2進数をより簡単に扱えるようにするために、主にコンピュータで使用されていました。
Q: なぜ16進法が8進法に代わってコンピュータに使われるようになったのですか?
A:コンピュータが24ビットから32ビット、64ビットへと変化するにつれて、16進数が8進数に代わって使われるようになりました。
Q:8進数を使っているのは他に誰がいますか?
A:カリフォルニアのユキ語やメキシコのパメアン語などのネイティブアメリカンは、指の数を数えるのではなく、指と指の間のスペースを使って数えるので、8進数を使っているグループがあります。
Q:8進法はどのような数字を使っているのですか?
A:8進法は、0から7までの数字を使います。
百科事典を検索する