ホームページ > バックエンド開発 > C++ > C/C で整数除算の上限を効率的に計算するにはどうすればよいですか?

C/C で整数除算の上限を効率的に計算するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-04 13:00:10
オリジナル
552 人が閲覧しました

How to Efficiently Calculate the Ceiling of Integer Division in C/C  ?

C / C での効率的な整数除算の上限計算

C および C では、整数除算 (x/y) を実行すると、結果は等価の除算の下限になります。浮動小数点計算。ただし、特定のシナリオでは、均等に分割された配列内の要素の数を決定するなど、代わりに上限を取得する必要がある場合があります。

問題の定義

指定2 つの整数値 x と y がある場合、整数除算 x/y の上限 (q) を効率的に計算するにはどうすればよいでしょうか?目的は、追加の比較、乗算、または浮動小数点数への変換のオーバーヘッドを回避する方法を見つけることです。

効率的な解決策

正の整数入力の場合、 x を y で割った上限は、次の式を使用して計算できます:

q = (x + y - 1) / y;
ログイン後にコピー

この式は機能します。除算を実行する前に、被除数 (x) と除数 (y) の合計に 1 を加算します。これにより、除算の結果の小数部分が次の整数値に切り上げられます。

オーバーフローに関する考慮事項

x と y の合計のオーバーフローを防ぐには、次のようにします。別の式を使用することもできます:

q = 1 + ((x - 1) / y); // if x != 0
ログイン後にコピー

この式は、次の計算を実行する前に、被除数 (x) から 1 を減算します。 分割。 x が 0 の場合、結果が 1 になるように調整が行われます。

実装に関する考慮事項

2 つの式のどちらを選択するかは、特定の実装によって異なります。オーバーフローの可能性があります。一般に、2 番目の式は加算演算を回避するため、より効率的です。

結論

ここに示した式は、整数の上限を計算するための効率的で簡単な方法を提供します。計算コストのかかる方法や不正確な方法に頼ることなく、 C / C で除算を行うことができます。

以上がC/C で整数除算の上限を効率的に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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