1

左に 2 回ビット シフトiし、値を に格納するとしますf

f = i << 2;

あれは正しいですか?C/C++ でこれを行うにはどうすればよいですか?

4

4 に答える 4

9

はい。

f = i << 2

シフトは、多くのビット調整操作で役立ちます。

これはかつて、数値を 4 倍する優れた方法でした。ただし、最近では、最適化コンパイラがそれを処理する傾向があります。

左端の 2 ビットは破棄されることに注意してください。

于 2009-10-22T00:21:10.090 に答える
8

追加のメモとして: あなたの質問はタグ付けされていますがC++、C と C++ が負の値のシフトに関してわずかに異なるパスをとったことはおそらく注目に値します。C++ では、負の値に対して<<orを実行した結果は実装定義です。>>C>>では実装定義ですが、while<<未定義の動作を生成します。

于 2009-10-22T01:31:41.633 に答える
0

ビット操作を完全にするために、このページをチェックしてください: uow TEXTBOOK -> bitops.html

于 2009-10-22T00:24:38.697 に答える