整数
でphpのintegerが32bitであることを前提(&マイナスは考慮しない)として&2のビットシフトでは説明しにくいので1のビットシフトで説明
1 << 1で2になります
1 << 2で4になります
ので簡単に言えば何回2倍していくかになります
昔は1 * 2より1 << 1のほうが早いとかなんとかあったりしたのですが、今やほぼ無意味かとおもいます。
じゃあ何に使うのかといえば大体はビット演算でフラグ操作に利用するとかになります
(これもまあメモリ少なかったときのフラグ数確保のためなんですが、今でもよく使う)
ビット演算子
32bitなので32個フラグ操作できます
とある値において5個目のフラグが1か0かを判断する際
とある値 & (1 << 5)が0じゃなければフラグが立ってるって判断できる
とある値において5個目のフラグを立てたいときは
とある値 | (1 << 5)でできます
おろしたいときは
とある値 & ~(1 << 5)
でできます