質問
ビットシフトi
を2回左にシフトして、値をf
に保存するとします。
f = i << 2;
それは正しいですか? C / C ++でこれをどのように行うのですか?
解決
はい。
f = i << 2
シフトは、いくつかのビット調整操作に役立ちます。
これは、数値に4を掛けるのに最適な方法でした。ただし、最近では、最適化コンパイラがそれを処理する傾向があります。
左端の2ビットは破棄されることに注意してください。
他のヒント
追記:質問にC++
というタグが付けられていても、負の値のシフトに関してCとC ++がわずかに異なるパスを取ったことに注意する価値があるでしょう。 C ++では、負の値に対して<<
または>>
を実行した結果は実装定義です。 Cでは、<=>は実装定義ですが、<=>は未定義の動作を生成します。
はい、i << 2
、f = i << 2
、またはf <<= 2
はすべて、ビットをシフトするために行いたいことです。
心に留めておくべきより多くのシフト事柄:
-
>>
もあります。ビットレベルでは、<<
は符号付き型と符号なし型で動作が異なります。 -
+
と-
の優先度は*
と/
の優先度よりも低いため、<=>と<=>に似ていると想像する人もいます。
ビット操作を完全にするために、次のページをご覧ください: uow TEXTBOOK-<!> gt; bitops.html
所属していません StackOverflow