jnobuyukiのブログ

研究していて困ったことやその解決に関するメモ。同じように困ったあなたのために。twitter ID: @j_nobuyuki

ビット演算子の使い方(初歩)

JavaScriptを扱うようになるまで、ビット演算子のことは「聞いたことがある」というくらいに知らなかったのです。少し調べてみたら便利そうなので、ここで使い方をまとめます。

ビット演算子とは?

要は二進数、0と1で構成される32ビット列への操作です。つまり32個の0もしくは1の並びです。

例:10進数の5は32ビット列で00000000000000000000000000000101になります。

演算子の種類

AND,OR, NOT, XOR, 左シフトと右シフトがあります。それぞれの演算子を示す記号は以下の通りです。

ANDは &
ORは |
NOTは ~
XORは ^
左シフトは <<
右シフトは >>>

左シフトと右シフト

左シフトと右シフトは初めてなのでここにやり方を書いておきます。まず左シフトはビット列を文字通り左にシフトさせます。
例として1<<1を考えます。<<の左側の1はビット列表現では00000000000000000000000000000001です。<<の右側に示す通りこれを1つ左にずらすと
00000000000000000000000000000010となります。左端の0は捨てます。この左シフト後のビット列が2進数であると仮定して、10進数に戻すと2になります。
つまり1つ左シフトさせて1が2になりました。
次に例として1<<5を考えます。シフトしたあとのビット列は00000000000000000000000000100000となり10進数に変換すると32になります。
つまり2の累乗になっているんです。Mozillaの説明によれば、
https://developer.mozilla.org/ja/docs/JavaScript/Reference/Operators/Bitwise_Operators
ビット演算子のシフトは数値の掛け算よりもずっと速く計算ができるらしいです。これは便利かもしれません。