プログラミングやコンピュータサイエンスを学んでいると、10進数・2進数・16進数と並んで8進数(オクタル)という数値表現が登場することがあります。
8進数はUnixシステムのファイルパーミッション設定や、一部のプログラミング言語における数値リテラルとして今でも現役で使われている重要な進数体系です。
「10進数を8進数に変換したいけど、計算の手順がわからない」「割り算と余りをどう使えばいいの?」という疑問を持つ方も多いのではないでしょうか。
本記事では、10進数から8進数への変換方法を、基数変換の基本的な考え方から割り算と余りを使った計算手順・小数変換・変換ツールの活用・練習問題まで、丁寧にわかりやすく解説します。
初めて8進数を学ぶ方はもちろん、復習をしたい方にも役立つ内容となっていますので、ぜひ最後までお読みください。
10進数から8進数への変換は「8で割り続けて余りを逆順に並べる」のが基本
それではまず、10進数から8進数への変換の基本的な方法について解説していきます。
10進数を8進数に変換する最も基本的な方法は、元の数を8で割り続けて余りを逆順(下から上)に並べる「繰り返し割り算法」です。
2進数への変換で「2で割る」のと同じ仕組みで、基数が8に変わっただけと考えると理解しやすいでしょう。
繰り返し割り算法の手順
具体的な手順は以下のとおりです。
手順1:変換したい10進数を8で割り、商と余りを記録する
手順2:商が0になるまで8で割り続ける
手順3:余りを下から上(最後の余りが最上位桁)に並べる
手順4:並べた余りの列が8進数の答えとなる
例として、10進数の「83」を8進数に変換してみましょう。
83 ÷ 8 = 商10 余り3
10 ÷ 8 = 商1 余り2
1 ÷ 8 = 商0 余り1
余りを下から並べると:123
よって、83(10進数)= 123(8進数)
さらに別の例として、10進数の「255」を変換してみます。
255 ÷ 8 = 商31 余り7
31 ÷ 8 = 商3 余り7
3 ÷ 8 = 商0 余り3
余りを下から並べると:377
よって、255(10進数)= 377(8進数)
8進数の重みと検算方法
8進数の各桁の重みは右から順に8⁰=1・8¹=8・8²=64・8³=512…となります。
変換結果の「123」で検算すると、1×64+2×8+3×1=64+16+3=83となり、元の10進数と一致することが確認できます。
変換後は必ず重みを使った足し算で検算する習慣をつけることで、計算ミスを大幅に減らすことができるでしょう。
8進数で使用できる数字の範囲
8進数では0・1・2・3・4・5・6・7の8種類の数字しか使いません。
つまり余りは必ず0〜7の範囲に収まります。
16進数のようにアルファベットを使う必要がないため、8進数は手計算での見た目がシンプルで扱いやすいという特徴があります。
ただし、8や9という数字は8進数には存在しないため、計算で8や9が余りとして出た場合は必ず計算ミスと判断できます。
小数を含む10進数の8進数変換方法
続いては、小数を含む10進数を8進数に変換する方法を確認していきます。
整数部分の変換が「8で割る」方法であるのに対し、小数部分の変換は「8を掛け続けて整数部分を取り出す」という逆の操作になります。
小数部分の変換手順
手順1:小数部分に8を掛ける
手順2:掛けた結果の整数部分(0〜7)を記録する
手順3:残った小数部分に再び8を掛ける
手順4:小数部分が0になるか、必要な桁数になるまで繰り返す
手順5:記録した整数部分を上から順に並べると8進数小数になる
例として、10進数の「0.578125」を8進数に変換してみましょう。
0.578125 × 8 = 4.625 → 整数部分4、小数部分0.625
0.625 × 8 = 5.0 → 整数部分5、小数部分0.0(終了)
上から並べると:45
よって、0.578125(10進数)= 0.45(8進数)
整数部分と小数部分を合わせた変換例
10進数「83.578125」を8進数に変換する場合は、整数部分と小数部分をそれぞれ変換してつなげます。
整数部分:83(10進数)= 123(8進数)
小数部分:0.578125(10進数)= 0.45(8進数)
合わせると:83.578125(10進数)= 123.45(8進数)
循環する場合の対処法
10進数の小数によっては、8を掛け続けても小数部分が0にならず無限に続く場合があります。
たとえば0.1(10進数)を8進数に変換すると、0.063146314631…と循環小数になります。
このような場合は必要な精度に応じた桁数で打ち切るという方法で対処します。
循環が起きているかどうかは、同じパターンが繰り返されることで判断できるでしょう。
10進数と8進数の相互変換一覧表と活用法
続いては、10進数と8進数の相互変換に役立つ一覧表と実際の活用法について確認していきます。
よく使われる値域の変換表を手元に持っておくことで、実務や学習の効率が大幅に向上します。
10進数・8進数・2進数の対応表(0〜63)
| 10進数 | 8進数 | 2進数 | 10進数 | 8進数 | 2進数 |
|---|---|---|---|---|---|
| 0 | 0 | 000 | 8 | 10 | 001000 |
| 1 | 1 | 001 | 9 | 11 | 001001 |
| 2 | 2 | 010 | 10 | 12 | 001010 |
| 3 | 3 | 011 | 16 | 20 | 010000 |
| 4 | 4 | 100 | 32 | 40 | 100000 |
| 5 | 5 | 101 | 63 | 77 | 111111 |
| 6 | 6 | 110 | 64 | 100 | 1000000 |
| 7 | 7 | 111 | 255 | 377 | 11111111 |
8進数と2進数の美しい関係
8進数と2進数の間には非常に密接な関係があります。
8進数1桁は2進数3桁(3ビット)に正確に対応しており、2進数を3桁ずつ区切るだけで8進数に変換できます。
例:2進数「110 111 001」を8進数に変換
3桁ずつ区切る:110 | 111 | 001
各ブロックを8進数に:6 | 7 | 1
答え:671(8進数)
検算:6×64+7×8+1=384+56+1=441(10進数)
逆に8進数から2進数への変換も同様に、8進数の各桁を3ビットの2進数に置き換えるだけで完了します。
Unixファイルパーミッションでの8進数活用
Unixシステム(Linux・macOSなど)では、ファイルやディレクトリのアクセス権(パーミッション)を8進数で管理します。
たとえば「chmod 755」という設定は、8進数の7(=2進数111=読み取り・書き込み・実行すべて許可)・5(=2進数101=読み取りと実行のみ許可)を表しています。
3ビットで「読み取り・書き込み・実行」の3種類の権限を表せるため、8進数(1桁=3ビット)がパーミッション設定に最適なのです。
ツールやプログラムを使った10進数から8進数への変換
続いては、ツールやプログラムを活用した10進数から8進数への変換について確認していきます。
手計算の理解を深めた後は、変換ツールを活用して実務の効率を最大化することが大切です。
Windowsの電卓(プログラマーモード)を使う方法
Windowsに標準搭載されている電卓アプリのプログラマーモードでは、10進数(DEC)・2進数(BIN)・8進数(OCT)・16進数(HEX)の4種類を瞬時に相互変換できます。
「DEC」モードで変換したい10進数を入力するだけで、OCT(8進数)欄に変換結果が自動表示されます。
学習中の確認作業や、急いで換算したい場合に大変便利でしょう。
ExcelのDEC2OCT関数を使う方法
ExcelにはDEC2OCT(デシマル・トゥ・オクタル)という関数があり、10進数を8進数に変換できます。
書式:=DEC2OCT(数値, [桁数])
例:=DEC2OCT(83) → 123
例:=DEC2OCT(255) → 377
例:=DEC2OCT(83, 6) → 000123(6桁ゼロ埋め)
注意:DEC2OCTは-536,870,912〜536,870,911の範囲に対応
逆に8進数を10進数に戻したい場合は「OCT2DEC関数」を使います。
書式:=OCT2DEC(8進数文字列)
例:=OCT2DEC(“123”) → 83
例:=OCT2DEC(“377”) → 255
Pythonでの8進数変換方法
Pythonではoct()関数を使って10進数を8進数に変換できます。
>>> oct(83)
‘0o123’
(先頭の「0o」は8進数であることを示すプレフィックスです)
整数のみ表示:oct(83)[2:] → ‘123’
逆変換(8進数→10進数):int(“123”, 8) → 83
Pythonではbin()・oct()・hex()という3つの組み込み関数で、2進数・8進数・16進数への変換がワンステップで行えます。
重要ポイント:10進数から8進数への変換は「8で割り続けて余りを逆順に並べる」のが基本です。8進数1桁は2進数3桁に対応しているため、2進数との相互変換も3桁ずつ区切るだけで行えます。ExcelならDEC2OCT関数、PythonならOCT()関数を使えば、大量データの変換も効率よく処理できます。
まとめ
本記事では、10進数から8進数への変換方法を、繰り返し割り算法の基本手順から小数変換・一覧表・ツール活用・Unixパーミッションでの実用例まで幅広く解説しました。
10進数から8進数への変換の基本は「8で割り続けて余りを逆順に並べる」というシンプルな方法であり、手順さえ覚えれば確実に計算できます。
小数部分は「8を掛け続けて整数部分を取り出す」という逆の手順を使い、整数部分と合わせることで任意の10進数を8進数に変換することが可能です。
8進数と2進数の間には「1桁=3ビット」という美しい対応関係があり、この知識はUnixパーミッション設定やデジタル回路の理解にも直結します。
ExcelのDEC2OCT関数・PythonのOCT()関数・Windowsの電卓プログラマーモードを活用することで、実務での変換作業を大幅に効率化できるでしょう。
ぜひ本記事を参考にして、8進数変換のスキルをしっかりと身につけてください。