C言語におけるシフト演算子の使い方
C言語では、<<という左シフト演算子と>>という右シフト演算子の2種類のシフト演算子が使われています。これら2つの演算子は、数をビット単位でシフトさせるために使われます。
左シフト演算子(<<)は、数の2進数表現を指定されたビット数左へシフトします。たとえば、式 x << y は、変数 x の2進数表現を y ビット左へシフトすることを表します。
1ビット右にずらす(>>)演算子では、数から2進表現内の指定されたビットを右にシフトします。右にずらす(>>)演算子には2種類あり、論理右シフト(>>)と算術右シフト(>>>)があります。論理右シフトでは、空のビットを0で埋め、算術右シフトでは、空のビットを符号ビットで埋めます。
シフト演算子を使用している例のいくつかを示します。
int x = 5; // 二进制表示为 0000 0101
int y = x << 2; // 左移2位,结果为 0001 0100(20)
int z = x >> 1; // 右移1位,结果为 0000 0010(2)
シフト演算子を使用する場合、次の点に注意する必要があります。
- 数値の型は整数型(例:int、char)でなければなりません。
- シフトする桁数は非負整数でなければなりません。
- 左シフト演算子(<<)はシフトされる数の最上位ビットが失われ、右シフト演算子(>>)はシフトされる数の最下位ビットが失われます。
- シフト演算子の結果は新しい整数であり、元の変数の値は変更されません。
- 左シフト演算は、正の数に対する処理では正常に動作しますが、負の数に対する処理では予期しない結果になる場合があります。注意してください。
少しでもあなたの役に立てていたら幸いです!