JavaScript ビット演算子

English version.

ビット演算子と呼ばれる特殊な演算子があります。これらの演算子は、数値のビットレベルでの操作に使用されます。ビット演算子は整数値に対して適用され、整数値をビット表現として操作します。

ビット演算子は、ビットレベルの操作やフラグの設定、特定の数値処理などに使用されます。ただし、ビット演算子は数値を32ビットの符号付き整数として扱うため、符号ビットの影響に注意する必要があります。

利用方法

& AND

ビットAND演算子は、2つの数値の対応するビットが両方とも1の場合に1を返します。それ以外の場合は0を返します。

let a = 5;  // 二進数: 0101
let b = 3;  // 二進数: 0011

let result = a & b;  // ビットAND演算: 0001 (結果は1)

console.log(result);  // 結果: 1

| OR

ビットOR演算子は、2つの数値の対応するビットのうち、どちらかが1の場合に1を返します。

let a = 5;  // 二進数: 0101
let b = 3;  // 二進数: 0011

let result = a | b;  // ビットOR演算: 0111 (結果は7)

console.log(result);  // 結果: 7

^ XOR

ビットXOR演算子は、2つの数値の対応するビットが異なる場合に1を返します。

let a = 5;  // 二進数: 0101
let b = 3;  // 二進数: 0011

let result = a ^ b;  // ビットXOR演算: 0110 (結果は6)

console.log(result);  // 結果: 6

~ NOT

ビットNOT演算子は、対象の数値の各ビットを反転します。

let num = 5;  // 二進数: 00000000000000000000000000000101

let result = ~num;  // ビットNOT演算: 11111111111111111111111111111010 (結果は-6)

console.log(result);  // 結果: -6

<< 左シフト

左シフト演算子は、数値のビット表現を左に指定された数のビットだけシフトします。

let num = 5;  // 二進数: 00000000000000000000000000000101

let result = num << 2;  // 左シフト演算: 00000000000000000000000000010100 (結果は20)

console.log(result);  // 結果: 20

>> 右シフト

右シフト演算子は、数値のビット表現を右に指定された数のビットだけシフトします。

let num = 20;  // 二進数: 00000000000000000000000000010100

let result = num >> 2;  // 右シフト演算: 00000000000000000000000000000101 (結果は5)

console.log(result);  // 結果: 5

>>> ゼロ埋め右シフト

ゼロ埋め右シフト演算子は、数値のビット表現を右に指定された数のビットだけシフトします。左側には常に0が追加されます。

let num = -10;  // 二進数: 11111111111111111111111111110110 (負の数)

let result = num >>> 2;  // ゼロ埋め右シフト演算: 00111111111111111111111111111101 (結果は1073741821)

console.log(result);  // 結果: 1073741821

---

関連記事

JavaScriptの記事一覧