JavaScriptによる8進数変換の解説
はじめに
8進数(オクタル)は、10進数(デシマル)と並んで数値の表現方法の一つで、基数が8の進数です。コンピュータプログラミングでは、特に古いシステムや低レベルの処理で使われることがありました。JavaScriptでは、数値を8進数に変換する方法を学びましょう。
8進数から10進数への変換
8進数を10進数に変換する方法は、8進数の各桁をその位置に応じた8の累乗に掛け算して合計を求めるというものです。
例えば、8進数の「125」を10進数に変換する場合、次のように計算します:
125 (8進数) = 1 * 8^2 + 2 * 8^1 + 5 * 8^0 = 1 * 64 + 2 * 8 + 5 * 1 = 64 + 16 + 5 = 85 (10進数)
JavaScriptで8進数を10進数に変換するには、次のように記述します:
let octal = '125'; // 8進数 let decimal = parseInt(octal, 8); // 10進数に変換 console.log(decimal); // 85
10進数から8進数への変換
逆に、10進数を8進数に変換する場合、10進数を8で割り、その余りを記録していきます。最終的に余りを逆順に並べることで8進数が得られます。
例えば、10進数の「85」を8進数に変換する場合、次のように計算します:
85 ÷ 8 = 10 余り 5 10 ÷ 8 = 1 余り 2 1 ÷ 8 = 0 余り 1
よって、85(10進数)は「125」(8進数)となります。
JavaScriptで10進数を8進数に変換するには、次のように記述します:
let decimal = 85; // 10進数 let octal = decimal.toString(8); // 8進数に変換 console.log(octal); // "125"
JavaScriptにおける8進数表現
JavaScriptでは、8進数のリテラルは「0o」を前につけて表現することができます。例えば、8進数の「125」をリテラルとして記述する場合は次のようになります:
let octal = 0o125; // 8進数のリテラル console.log(octal); // 85(10進数として表示)
このように、JavaScriptでは8進数の数値リテラルを簡単に扱うことができます。
よくある間違い
8進数を扱う際に陥りやすい間違いは、8進数と10進数の違いを理解していないことです。特に、8進数の数値に対して無意識に10進数と同じように計算してしまうと、誤った結果を得てしまいます。
また、JavaScriptで「0o」を忘れて8進数のリテラルをそのまま使用しようとすると、エラーが発生します。例えば、次のようなコードはエラーになります:
let octal = 0125; // 古い形式、エラーが発生する可能性あり console.log(octal);
このような誤りを避けるために、「0o」をしっかりと付けて8進数リテラルを記述するようにしましょう。