C言語における左シフトと右シフトの演算規則は何ですか?
C言語では、左シフトと右シフトはビット演算子であり、数値のバイナリビットを移動する操作に使用されます。左シフト演算子<<は、指定されたビット数だけ数値のバイナリビットを左に移動し、右側の空いたビットは0で埋められます。右シフト演算子>>は、指定されたビット数だけ数値のバイナリビットを右に移動し、左側は符号ビットによって埋められます。
具体なルールは以下の通りです:
左シフト演算子<<:数をnビット左にシフトすると、2のn乗を掛けることと同じです。例えば、a << 2 はaを2つ左へシフトし、aを4倍にするという意味です。
右シフト演算子 >>:数をnビット右にシフトすると、2のn乗で割ることに相当します。符号付き整数の場合、空のビットは符号ビットで埋められます(つまり、符号は変わりません)。符号なし整数の場合、空のビットは0で埋められます。