JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで指定された整数のビット順を反転する方法

本記事では、与えられた整数のビット(2進数の桁)の並び順を反転させるJavaScriptプログラムの実装方法を解説します。

まず、具体的な動作イメージを確認しておきましょう。

56 → 2進数で「111000」
ビットを反転すると → 7(2進数で「111」)

続いて、もう一つの例です。

234 → 2進数で「11101010」
ビットを反転すると → 87(2進数で「1010111」)

実装の考え方

この処理は、以下の手順で実現できます。

  1. toString(2) メソッドを使って、数値を2進数表記の文字列に変換する
  2. split('') で文字列を1文字ずつの配列に分解し、reverse() で要素の順序を反転させる
  3. join('') で配列を再び文字列に連結する
  4. parseInt(文字列, 2) を使って、反転後の2進数文字列を10進数の整数に戻す

コード例

const num1 = 789;
const num = 43;

const reverseBits = (num = 1) => {
   const str = num.toString(2);          // 数値を2進数の文字列に変換
   const arr = str.split('').reverse();  // 文字列を配列にして反転
   const arrStr = arr.join('');          // 配列を文字列に連結
   const reversedNum = parseInt(arrStr, 2); // 2進数として解析し10進数へ
   return reversedNum;
}

console.log(reverseBits(num));
console.log(reverseBits(num1));

この関数はデフォルト引数として 1 を設定しているため、引数なしで呼び出されてもエラーにならない点がポイントです。

出力結果

上記のコードを実行すると、コンソールには次のように出力されます。

53
675

43 は2進数で 101011 となり、これを反転した 110101 が10進数の 53 に対応します。同様に 789 は2進数で 1100010101、反転後は 1010100011 となり、10進数の 675 になります。

このように、文字列操作を組み合わせることで、ビット演算を直接扱わなくても簡潔にビット反転処理を実装できます。

  1. JavaScriptで配列の特定の位置に要素を挿入する方法

    配列内の指定した位置に要素を追加したい場面はよくあります。しかし、JavaScriptにはそのための機能が標準では用意されていません。そこで、独自の関数を作成する必要があります。この関数をArray.prototypeに追加すれば、すべての配列オブジェクトから直接呼び出せるようになります。 insertメソッドを自作する Array.prototype.insert = function(data, position) { if (position >= this.length) { this.push(data); // 配列の長さ以上なら末尾に追加 }

  2. JavaScriptのconst宣言とは?再代入できない変数の基本と使い方を解説

    JavaScriptのconst宣言は、値を再代入することも後から再宣言することもできない変数を作成するための構文です。constはES2015(ES6)で導入されました。 const宣言の主な特徴 一度値を代入すると、別の値に再代入することはできません。 同じ名前の変数を同じスコープ内で再宣言するとエラーになります。 宣言時に必ず初期値を代入する必要があります。 ブロックスコープ({}内でのみ有効)を持ちます。 それでは、JavaScriptにおけるconst宣言の実際のコードを見ていきましょう。 サンプルコード <!DOCTYPE html> <html>