C では、以下に示すように、ビット単位の演算子を使用して乗算と除算を実行できます。
i*2 = i << 1 i*3 = (i << 1) + i; i*10 = (i << 3) + (i << 1)
これにより、そのようなビット単位の演算が実際に直接乗算よりも高速であるかどうかという疑問が生じます。除算。
短い答え: ありそうもない。
長い答え:
最新のコンパイラプロセッサ アーキテクチャに基づいて乗算を効率的に処理するオプティマイザを採用します。標準の i*10 構文を使用すると、コンパイラはシステムに最適なアセンブリ/マシン コード シーケンスを決定できます。乗算命令自体が、シフト演算と加算演算を使用して内部的に実装される可能性さえあります。
明確さと保守性のために、適切な演算子 (ビット単位の演算にはシフト、乗算にはシフト) を使用することをお勧めします。算術目的でビット単位の演算子を使用するのではなく、乗算用)。あなたのコードは他の人にとって理解しやすくなり、コンパイラによっても最適化される可能性があります。
以上がC でシフト演算子を使用した乗算と除算は本当に高速ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。