JavaScriptのビット単位NOT(~)演算子とは?仕組みと使い方を解説
JavaScriptにおけるビット単位NOT(~)演算子は、数値を32ビットの2進数として扱い、すべてのビットを反転させる(0を1に、1を0にする)単項演算子です。
この演算子の結果は、常に -(x + 1) と等しくなります。つまり、元の数値の符号を反転させて1を引いた値が返されるため、覚えておくと便利です。
NOT演算の仕組み
例えば、数値「7」は32ビットの2進数で次のように表現されます。
7 = 00000000000000000000000000000111
これにNOT演算(~)を適用すると、すべてのビットが反転され、次のようになります。
~7 = 11111111111111111111111111111000 → -8
コンピュータは負の数を「2の補数」という形式で表すため、上記のビット列は -8 として解釈されます。
サンプルコード
以下のコードを実行して、ビット単位NOT演算子の動作を確認してみましょう。
<!DOCTYPE html>
<html>
<body>
<script>
document.write("Bitwise NOT Operator<br>");
// 7 = 00000000000000000000000000000111
document.write(~7);
</script>
</body>
</html>出力結果
-8
まとめ
- ビット単位NOT(~)演算子は、各ビットを反転させる単項演算子である
- 計算結果は常に -(x + 1) になる
- 例:~7 は -8、~-8 は 7 を返す
この性質を利用すると、indexOf() の戻り値判定などで簡潔な条件式を書くテクニックとしても使われることがあります。
-
JavaScriptのビット単位の右シフト(>>)演算子とは?仕組みと使い方を解説
JavaScriptのビット演算子「>>」(右シフト演算子)は、数値を2進数のビット列として扱い、指定した桁数だけビットを右へずらすための演算子です。シフトによって右端からあふれたビットは切り捨てられ、その部分は考慮されません。ビット単位の右シフト(>>)の仕組み「a >> b」と記述すると、a のビット列が b 桁分だけ右に移動します。このとき、最も右側のビットから順に失われていきます。また、負の数の場合は符号を維持するために、左側には1が補われます(符号伝播シフトと呼ばれます)。右に1ビットシフトすることは、概ね「2で割る」ことと同じ意味を持ちます。例え
-
JavaScriptのビット単位XOR(^)演算子とは?仕組みと使い方を解説
JavaScriptのビット単位XOR(^)演算子は、2つの数値をビットごとに比較し、対応するビットが異なる場合に1を、同じ場合に0を返す演算子です。「排他的論理和」とも呼ばれます。XOR演算のルールXOR演算子は、各ビットを以下のルールで評価します。0 ^ 0 = 01 ^ 0 = 10 ^ 1 = 11 ^ 1 = 0使用例次のコードを実行して、JavaScriptのビット単位XOR演算子の動作を確認してみましょう。<!DOCTYPE html> <html> <body> <sc