整数値に対する左ビットシフトは算術演算子を使った乗算と同じ結果を得られます。
二進法は二の累乗(POW2)で桁上がりするため、POW2 値との組み合わせはコンピュータを使った計算上よく利用されます。
例えば値を二倍したい場合、左ビットシフトを使って
var a = 2 << 1;
このように書けます。変数 a には値4が代入される。
4倍したい場合には
var a = 2 << 2;
8倍したい場合には
var a = 2 << 3;
左ビットシフトと加算を組み合わせれば POW2 値以外のパターンであっても算術演算子の乗算と同じ結果を得られます。
3倍したい場合、
var a = (2 << 1) + 2;
5倍したい場合、
var a = (2 << 2) + 2;
6倍したい場合は POW2 値を二つ含む(2と4の合計は6)ため、
var a = (2 << 2) + (2 << 1);
じゃあ7倍は?
var a = (2 << 2) + (2 << 1) + 2;