左に 2 回ビット シフトi
し、値を に格納するとしますf
。
f = i << 2;
あれは正しいですか?C/C++ でこれを行うにはどうすればよいですか?
左に 2 回ビット シフトi
し、値を に格納するとしますf
。
f = i << 2;
あれは正しいですか?C/C++ でこれを行うにはどうすればよいですか?
はい。
f = i << 2
シフトは、多くのビット調整操作で役立ちます。
これはかつて、数値を 4 倍する優れた方法でした。ただし、最近では、最適化コンパイラがそれを処理する傾向があります。
左端の 2 ビットは破棄されることに注意してください。
追加のメモとして: あなたの質問はタグ付けされていますがC++
、C と C++ が負の値のシフトに関してわずかに異なるパスをとったことはおそらく注目に値します。C++ では、負の値に対して<<
orを実行した結果は実装定義です。>>
C>>
では実装定義ですが、while<<
は未定義の動作を生成します。
ビット操作を完全にするために、このページをチェックしてください: uow TEXTBOOK -> bitops.html