JavaScript ビット演算子
ビット演算子と呼ばれる特殊な演算子があります。これらの演算子は、数値のビットレベルでの操作に使用されます。ビット演算子は整数値に対して適用され、整数値をビット表現として操作します。
ビット演算子は、ビットレベルの操作やフラグの設定、特定の数値処理などに使用されます。ただし、ビット演算子は数値を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
---