JavaScriptで数値を7進表現(基数7)に変換する方法を解説
7進数への変換の基本
2進数への変換では、10進数の数値を繰り返し2で割りながら余りを記録していきます。これとまったく同じ考え方で、7進数への変換では、対象の数値を繰り返し7で割っていくことで7進表現を求めることができます。
今回作成するのは、任意の数値を受け取り、その7進表現を返すJavaScript関数です。
たとえば、以下のような結果になります。
base7(100) = 202
100を7進数で表すと「202」となります。これは、100 ÷ 7 = 14 余り 2 → 14 ÷ 7 = 2 余り 0 → 2 ÷ 7 = 0 余り 2 という一連の除算で得られた余りを、下の桁から順に並べたものです。
実装コード
const num = 100;
const base7 = (num = 0) => {
let sign = num < 0 && '-' || '';
num = num * (sign + 1);
let result = '';
while (num) {
result = num % 7 + result;
num = num / 7 ^ 0;
}
return sign + result || '0';
};
console.log(base7(num));
コードのポイント
- 符号の分離:入力が負の数の場合は、その符号を変数
signに退避させ、絶対値に変換したうえで計算を行います。最後に符号を結果の先頭に付けて返すため、負の数にも対応できます。 - 余りの収集:
whileループ内では、7で割った余り(num % 7)を結果文字列の先頭に連結していきます。これにより、最終的に桁が上位から下位へと正しい順序で並びます。 - 整数への切り捨て:
num / 7 ^ 0は、XOR演算子(^)の性質を利用して小数部を切り捨てるテクニックです。Math.trunc()などでも同様の処理が可能です。 - ゼロの扱い:引数が0の場合、ループは一度も実行されないため、戻り値として文字列「0」が返されるようになっています。
出力結果
コンソールには次のように表示されます。
202
もっと簡単な方法:toString()を活用する
実は、JavaScript標準のNumber.prototype.toString()メソッドは、引数に2〜36の基数を指定できるため、7進数への変換はわずか1行で実現できます。
const base7 = (num) => num.toString(7); console.log((100).toString(7)); // '202' console.log((-100).toString(7)); // '-202' console.log((0).toString(7)); // '0'
この方法であれば、負の数や0も自動的に正しい形式へ変換されます。変換アルゴリズムそのものを学習したい場合を除き、実務ではこちらのシンプルな方法を採用するのがおすすめです。
-
バニラJavaScriptで文字列を数値に変換する方法|parseInt関数の使い方を解説
parseInt関数とはバニラJavaScriptで文字列を数値に変換する最も基本的な方法が、グローバル関数のparseIntです。この関数は、文字列として渡された値を指定した基数(進数)に基づいて解釈し、整数を返します。構文parseInt(string, radix);各引数の意味は以下の通りです。string ― 解析対象となる値です。引数が文字列以外の場合は、ToStringメソッドによって自動的に文字列へ変換されます。また、先頭の空白文字は無視されます。radix ― 文字列の基数(数学的な記数法における底)を表す、2から36までの整数です。基数を指定してさまざまな進数を整数に変換で
-
JavaScriptの数値(Number)の基本と実践サンプルコード
JavaScriptでは、整数も小数もすべて「Number」型として扱われます。この記事では、数値変数の定義方法と、それらを使った簡単な演算の例を、動作するHTMLサンプルコードとともに紹介します。サンプルコード以下は、JavaScriptで数値を扱う基本的な例です。整数(22、99)と小数(1.523)を変数に格納し、ボタンをクリックすると画面に表示する仕組みになっています。<!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name=viewport co