ビット操作コードの重要性?

私は過去3年間プログラミングしていて、実際にビット操作コードを書く努力をしていません。エンタープライズソフトウェアで働いていたので、私は他の開発者もそれを書くのを見ていませんでした。

計算を実行するための数学演算を使用する代わりに、ビット操作コードを書くのは良い方法ですか?

2

4 答え

多かれ少なかれ、ビット操作の恩恵を受けるような種類のソフトウェアで作業していないなら、おそらくそれらを使用する必要はありません。実際には、多くの場所でコードを読みにくくすることができ、理由がない限り実際には使用すべきではありません。

しかし、あなたが興味を持っているのであれば、適切なアプリケーションがあれば便利なツールです。たとえば、2の累乗で乗算したコードがある場合は、ビットを左シフトする方が速くなります。これは、乗算コードがパフォーマンスのボトルネックであると判断した場合に重要になります。

実現する重要な事実の1つは、コンパイラの中には、これらの形式の最適化をいくつか実行することです(たとえば、 i = i * 2 の行を左シフトに変えるなど)。

2
追加された

これは状況によって異なります。例えば、右シフトおよび左シフト演算は、一般に、除算演算子よりも高速である。最適化が必要な場合や、ビット操作が他の方法より速い場合は、ビット操作を使用する必要があります。しかし、時期尚早に最適化しないでください。それは良いことではないからです。最適化が必要であり、ビット演算子を使用することが以前のアプローチより速い場合は、使用してください。

1
追加された
一般的なアドバイスとして悪い。コンパイラは通常、単一のシフトが機能しないソートを含む、より良い除算/乗算の技を知っています。
追加された 著者 Sebastian Mach,
しかし、コンパイラは一般的にあなたのためにそれを行います。
追加された 著者 Dave Newton,

これは少し奇妙な質問です!いいえ、エンタープライズコードはおそらくビット操作を行う可能性は低いです。これは通常Java/.NETなどで書かれており、メッセージをプッシュしたり、さまざまなシステム間で高レベルでやりとりすることに関係しています。

しかし、CやC ++やアセンブラを使用してドライバを作成している場合や、賢明な低レベルの計算を行っている場合は、ビット操作がおそらくより重要であり便利です。時間が来たときにそれをいつ使うべきかは分かりません。

1
追加された

TL; DR:いいえ。数学演算には算術演算子を使用します。

1
追加された