重複の可能性:
ビットシフトの初心者向けガイド?
JavaScript >>> 演算子とは何ですか?どのように使用しますか?
<<いくつかのコードを読んでいるときに出くわしました。
1<<1 //2
2<<1 //4
3<<1 //6
3<<2 //12
重複の可能性:
ビットシフトの初心者向けガイド?
JavaScript >>> 演算子とは何ですか?どのように使用しますか?
<<いくつかのコードを読んでいるときに出くわしました。
1<<1 //2
2<<1 //4
3<<1 //6
3<<2 //12
この回答から取得:
整数は一連のビットとしてメモリに格納されます。たとえば、32 ビットとして格納される数値 6は次のintようになります。
00000000 00000000 00000000 00000110
このビット パターンを 1 つ左の位置 ( 6 << 1) にシフトすると、数値は 12 になります。
00000000 00000000 00000000 00001100
ご覧のとおり、桁が 1 桁左にシフトし、右側の最後の桁が 0 で埋められています。また、左にシフトすることは、2 のべき乗による乗算と同等であることに注意6 << 1し6 * 2て6 << 3ください6 * 8。優れた最適化コンパイラは、可能であれば乗算をシフトに置き換えます。
これらは循環シフトではないことに注意してください。この値を 1 桁左にシフトする ( 3,758,096,384 << 1):
11100000 00000000 00000000 00000000
結果は 3,221,225,472 になります。
11000000 00000000 00000000 00000000
「最後から」シフトされた桁は失われます。回りません。
ビットごとの左シフト演算子です。
a << bbのバイナリ表現の左にビットをシフトしますa。