JavaScriptで2進数文字列を反転させる方法(0と1の入れ替え)
はじめに
今回は、0と1のみで構成される2進数の文字列を受け取り、その反転(すべての0を1に、すべての1を0に入れ替えた結果)を返す関数をJavaScriptで作成する方法を解説します。
例えば、入力が「1101」であれば、出力は「0010」になります。このような処理は、ビット演算やデータ変換の基礎として非常に重要です。
実装コード
それでは、この関数のコードを見ていきましょう。
const num = '1101';
const n = '11010111';
const inverseBinary = (binary) => {
return binary.split("").map(el => {
return `${1- parseInt(el, 10)}`
}).join("");
};
console.log(inverseBinary(num));
console.log(inverseBinary(n));コードのポイント
この関数では、以下の手順で処理を行っています。
- split(""):文字列を1文字ずつ配列に分割します。
- map():各文字を数値に変換し、「1 - 数値」を計算することで 0 と 1 を入れ替えます(0 → 1、1 → 0)。
- join(""):処理後の要素を再び1つの文字列に結合して返します。
実行結果
上記のコードをコンソールで実行すると、次のような出力が得られます。
0010 00101000
まとめ
split・map・join を組み合わせることで、2進数文字列の反転をシンプルかつ読みやすく実装できます。ビット反転の考え方は、フラグ管理や論理演算など、さまざまな場面で応用できるので、ぜひ覚えておきましょう。
-
JavaScriptで学ぶ二分探索木(Binary Search Tree)の基本と操作方法
二分探索木とは二分探索木は、通常の木構造とは異なる特別な性質を持つデータ構造です。この性質により、データの検索・挿入・削除を効率的に行うことができます。二分探索木では、各ノードが次のルールに従わなければなりません。ノードの左の子は、必ず親ノードより小さい値を持つノードの右の子は、必ず親ノードより大きい値を持つこの規則が成り立つことで、値を探す際に「目的の値より小さければ左へ、大きければ右へ」と分岐をたどるだけで済み、探索範囲を毎回半分に絞り込めます。そのため、整列された配列に対する二分探索と同様の効率性が得られます。本記事を含む木構造のセクションでは、主にこの二分探索木を中心に解説を進めていき
-
JavaScriptの二分木(バイナリツリー)とは?基本概念と重要用語を徹底解説
二分木(バイナリツリー)は、データの格納を目的として使用される特殊なデータ構造です。最大の特徴は、各ノードが持てる子ノードの数が2つまでという条件にあります。二分木は、整列済み配列と連結リストの両方の長所を兼ね備えた構造です。検索はソートされた配列と同等の速さで行え、データの挿入や削除も連結リストと同様に高速に実行できます。そのため、大量のデータを効率的に扱いたい場合に非常に有用なデータ構造といえます。以下は、二分木の構造を示したイラストです。図には、このあと解説する重要な用語も含まれています。二分木における重要な用語二分木を理解するうえで押さえておきたい、主要な用語を以下にまとめました。パス