ホームページ > バックエンド開発 > C++ > C でシフト演算子を使用した乗算と除算は本当に高速ですか?

C でシフト演算子を使用した乗算と除算は本当に高速ですか?

DDD
リリース: 2024-12-01 17:52:10
オリジナル
933 人が閲覧しました

Are Multiplication and Division Using Shift Operators in C Really Faster?

C でシフト演算子を使用した乗算と除算は高速ですか?

C では、以下に示すように、ビット単位の演算子を使用して乗算と除算を実行できます。

i*2 = i << 1
i*3 = (i << 1) + i;
i*10 = (i << 3) + (i << 1)
ログイン後にコピー

これにより、そのようなビット単位の演算が実際に直接乗算よりも高速であるかどうかという疑問が生じます。除算。

答え:

短い答え: ありそうもない。

長い答え:

最新のコンパイラプロセッサ アーキテクチャに基づいて乗算を効率的に処理するオプティマイザを採用します。標準の i*10 構文を使用すると、コンパイラはシステムに最適なアセンブリ/マシン コード シーケンスを決定できます。乗算命令自体が、シフト演算と加算演算を使用して内部的に実装される可能性さえあります。

結論:

明確さと保守性のために、適切な演算子 (ビット単位の演算にはシフト、乗算にはシフト) を使用することをお勧めします。算術目的でビット単位の演算子を使用するのではなく、乗算用)。あなたのコードは他の人にとって理解しやすくなり、コンパイラによっても最適化される可能性があります。

以上がC でシフト演算子を使用した乗算と除算は本当に高速ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート