JavaScriptのビット演算子での計算方法

JavaScriptのビット演算子を使用して、数値のバイナリ表現を操作します。一般的なビット演算子とその動作を以下に示します。

  1. ビットごとの AND (&):2 つの数値のそれぞれのビットに対して論理積演算を実行し、両方のビットが 1 の場合のみ、1 となります。

10と6のbitごとのANDの結果は2になる。これは、10の2進数が1010で6の2進数が0110だからで、ANDの結果は0010になる。

  1. ビットごとの OR 演算(|): 2 つの数値の各ビットに対して論理 OR 演算を行い、どちらかのビットが 1 のときだけ結果を 1 とします。

例えば、10 ÷ 6 = 14 です。これは、10 の2進数表現が 1010 で、6 の2進数表現が 0110 で、ビットごとの OR 演算を行うと 1110 になるからです。

  1. ビット排他的論理和(^):2つの数のそれぞれのビットに対して論理排他的論理和操作を行います。2つのビットが同じならば0、異なれば1です。

10 ^ 6 = 12 です。 10は2進数では1010、6は0110で、ビット毎のXORは1100となります。

  1. ビットごとの反転(~):数値の各ビットに対して論理否定演算を行い、各ビットを反転させる。

例えば、~10 の結果は -11 です。10 の 2 進表現が 0000 1010 で、ビットごとの否定を実行すると 1111 0101 になり、つまり -11 になるからです。

  1. 左にシフト(<<):数値の2進数表示を指定したビット分左にシフトし、右側は0で埋められる。

例えば、10 << 2 は 40 になります。なぜなら 10 の 2 進数表現が 0000 1010 で、左へ 2 ビットシフトすると 0010 1000 になり、10 進数で 40 になるからです。

  1. 右シフト(>>):1を指定した数値の右ビットに移動し、左側を0または1で埋める(数値の符号に依存)。

たとえば、10 >> 2の結果は2で、これは10の2進数は0000 1010であり、これを2ビット右にシフトすると0000 0010となり、つまり2になるからです。

  1. 符号なし右シフト(>>>)。数字の2進数表現を指定されたビット数だけ右にシフトし、左を0で埋める。

たとえば、10 >>> 2は2になります。これは、10の2進数表現である0000 1010を符号なし右シフトで2ビットシフトすることで0000 0010、すなわち2が得られるためです。

ご注意ください:

  1. ビット演算子は整数にのみ適用でき、整数の範囲外の値に適用すると整数に変換されます。
  2. ビット単位の演算オペレーターでは、数値は32ビットの符号付き整数として扱われます。
bannerAds