8進数変換ツール
8進数(オクタル)とは
8進数(オクタル)は、0から7までの8つの数字(0, 1, 2, 3, 4, 5, 6, 7)を使用する数体系です。 基数が8であり、各桁は8の累乗(80, 81, 82, ...)を表します。 コンピュータサイエンスやプログラミングの世界では、UNIXシステムのファイル権限の表現や 一部のプログラミング言語でのエスケープシーケンスなどで使用されています。
8進数と2進数の関係
8進数と2進数の間には密接な関係があります。8は2の3乗(23)であるため、 8進数の1桁は2進数の3桁に対応します。このため、2進数から8進数への変換や、 8進数から2進数への変換は比較的簡単に行うことができます。これは、16進数が2進数の4桁に対応するのと似ています。
8進数と2進数の対応表
8進数
- 0 → 000
- 1 → 001
- 2 → 010
- 3 → 011
8進数
- 4 → 100
- 5 → 101
- 6 → 110
- 7 → 111
8進数の変換方法
10進数から8進数への変換方法
10進数から8進数に変換するには、10進数を8で割り、余りを記録する方法を使います。 例えば、10進数の「75」を8進数に変換する場合:
9 ÷ 8 = 1 余り 1
1 ÷ 8 = 0 余り 1
結果:113(下から順に読む)
このように、10進数の75は8進数では113となります。
8進数から10進数への変換方法
8進数から10進数への変換は、各桁の値に対応する8の累乗を掛けて合計する方法です。 例えば、8進数の「47」を10進数に変換する場合:
= 4×8 + 7×1
= 32 + 7
= 39
このように、8進数の47は10進数では39となります。
8進数から2進数への変換方法
8進数から2進数への変換は、各8進数の桁を対応する3桁の2進数に置き換えるだけです。 例えば、8進数の「25」を2進数に変換する場合:
5 → 101
結果:010101
このように、8進数の25は2進数では010101となります。先頭の0は省略できるので、10101とも表記できます。
8進数から16進数への変換方法
8進数から16進数への直接変換は少し複雑ですが、8進数→10進数→16進数、または8進数→2進数→16進数という手順で変換できます。 例えば、8進数の「57」を16進数に変換する場合:
方法1: 8進数→10進数→16進数
5×81 + 7×80 = 47(10進数)47 ÷ 16 = 2 余り 15(F)
結果:2F
方法2: 8進数→2進数→16進数
5 → 1017 → 111
101111(2進数)
0010 1111 → 2F(16進数)
どちらの方法でも、8進数の57は16進数では2Fとなります。
8進数の実用例
UNIXファイル権限
UNIXやLinuxシステムでは、ファイルやディレクトリの権限(パーミッション)を8進数で表現します。 例えば、「chmod 755 file.txt」というコマンドは、所有者に読み書き実行権限(7=4+2+1)、 グループとその他のユーザーに読み実行権限(5=4+1)を与えます。 これは2進数では「111 101 101」に対応し、それぞれの桁が読み取り(r=4)、書き込み(w=2)、実行(x=1)の権限を表しています。
プログラミング言語でのエスケープシーケンス
C、Java、Pythonなどの多くのプログラミング言語では、文字列内の特殊文字を表現するために バックスラッシュ(\)に続いて8進数を使用することがあります。例えば、「\141」はASCIIコードで 小文字の「a」を表します。16進数 変換 やり方を知ることで、これらのエスケープシーケンスも容易に理解できます。
歴史的背景
8進数は、初期のコンピュータシステムで広く使用されていました。特に、PDPシリーズやVAXなどの コンピュータでは、ワードサイズが18ビットや36ビットだったため、3ビットずつのグループに分けやすい 8進数が便利でした。現代のコンピュータでは16進数がより一般的ですが、歴史的な理由から 8進数はまだ多くのシステムで使用されています。
2進数・10進数・16進数との関係
進数変換を理解する上で、各進数の関係性を把握することが重要です。特に、2進数 16進数 変換や 10進数 2進数 変換は頻繁に行われる操作です。8進数はこれらの中間に位置し、特に2進数との 変換が容易であるという特徴があります。
変換例一覧
| 10進数 | 2進数 | 8進数 | 16進数 |
|---|---|---|---|
| 10 | 1010 | 12 | A |
| 20 | 10100 | 24 | 14 |
| 64 | 1000000 | 100 | 40 |
| 100 | 1100100 | 144 | 64 |
| 255 | 11111111 | 377 | FF |