JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptのビット単位の右シフト(>>)演算子とは?仕組みと使い方を解説

JavaScriptのビット演算子「>>」(右シフト演算子)は、数値を2進数のビット列として扱い、指定した桁数だけビットを右へずらすための演算子です。シフトによって右端からあふれたビットは切り捨てられ、その部分は考慮されません。

ビット単位の右シフト(>>)の仕組み

a >> b」と記述すると、a のビット列が b 桁分だけ右に移動します。このとき、最も右側のビットから順に失われていきます。また、負の数の場合は符号を維持するために、左側には1が補われます(符号伝播シフトと呼ばれます)。

右に1ビットシフトすることは、概ね「2で割る」ことと同じ意味を持ちます。例えば「-7 >> 1」の結果は「-4」になります。

次のコードを実行して、JavaScriptのビット単位の右シフト演算子の動作を確認してみましょう。

<!DOCTYPE html>
<html>
   <body>
      <script>
         document.write("Bitwise Right Shift Operator<br>");
         document.write(-7>>1);
      </script>
   </body>
</html>

実行結果

Bitwise Right Shift Operator
-4

主な用途

右シフト演算子は、2のべき乗による除算を高速に処理したい場合などに活用されます。「x >> 1」は x を2で割った値(小数点以下切り捨て)、「x >> 2」は4で割った値と同等の結果となるため、パフォーマンスが求められる場面で役立ちます。

  1. JavaScriptのビット演算子入門|NOT(~)・左シフト(<<)・右シフト(>>)をわかりやすく解説

    JavaScriptのビット否定演算子(Bitwise NOT:~) チルダ記号(~)を使うビット否定演算子は、数値を32ビットの2進数として扱い、すべてのビットを反転させる演算です。「0」は「1」に、「1」は「0」に変わります。JavaScriptでは ~x の結果は必ず -(x + 1) と等しくなるという特徴があります。 コード例 <html> <body> <p id=not></p> <script> document.getElementById(not).innerHTML = ~ 13; </script

  2. Pythonの右シフト演算子(>>)とは?仕組みと使い方をわかりやすく解説

    右シフト演算子(>>)とはPythonにおける >> は右シフト演算子と呼ばれるビット演算子の一つです。この演算子は、第1オペランドを2進数(ビット列)として扱い、そのビットを第2オペランドで指定された桁数だけ右方向へ移動させます。シフトによって左側に空いた上位ビットには、すべて 0 が設定されます。つまり、正の整数に対しては符号が変わることなく値が半分ずつになっていくイメージです。基本的な動作イメージ数学的な観点で見ると、a >> n は「a を 2 の n 乗で割った商(小数点以下切り捨て)」と同じ結果になります。たとえば 100 >> 2