##C の << と >> の違い (左)シフト演算子) と >> (右シフト演算子) は、符号付き整数または符号なし整数をビット単位でシフトするために使用されるビット演算子です。それらの主な違いは移動方向です。C の << と >> は、それぞれ整数のビット単位の左シフトとビット単位の右シフトに使用されるビット シフト演算子です。左シフト演算子 (
左シフト演算子 (<<)
左シフト演算子 << 整数のバイナリ表現を指定された桁数だけ左にシフトします。 。整数が符号付き整数の場合、空いたビットは符号ビット (正の数の場合は 0、負の数の場合は 1) で埋められます。整数が符号なし整数の場合、空いたビットは 0 で埋められます。右シフト演算子 (>>)
右シフト演算子 >> 整数のバイナリ表現を指定された桁数だけ右にシフトします。 。符号付き整数の場合、符号ビットが空いたビットにコピーされるため、数値の符号が保持されます。符号なし整数の場合、空いたビットは 0 で埋められます。使用法
左シフト演算子は、バイナリ表現で 0 を加算するのと同じであるため、通常、整数を 2 のべき乗で乗算するために使用されます。int x = 5; // 二进制:101 x << 2; // 二进制:10100 (等效于 x * 2^2)
int y = 20; // 二进制:10100 y >> 2; // 二进制:101 (等效于 y / 2^2)
例
次の表では、<< と >> を使用して符号付き整数と符号なし整数に対して置換演算を実行する効果を比較しています。操作符号付き整数
5 << 2 | ||
---|---|---|
-5 <<2 | -20 | -20 |
##5 >>2 1 | 1 | |
-5 >>2
| -22147483646 | |
注: |
符号なし整数の場合、右シフト演算の結果は常に正の数になります。 | 符号付き整数の場合、右シフト演算の結果は符号ビットによって異なります。 |
以上がC++の<<と>>の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。