整数が 2 つの整数の間にあるかどうかを判断する最速の方法 (両端を含む)
整数が他の 2 つの整数の間にあるかどうかを判断するのは一般的です従来のアプローチでは論理積と不等号を使用します。比較:
x >= start && x <= end
しかし、より高速な代替手段はありますか?
考えられる最適化の 1 つは、単一の比較/分岐を使用することです。このアプローチは、数値と下限と上限を符号なし整数に変換し、その差を比較することで機能します。
if ((unsigned)(number-lower) <= (upper-lower)) in_range(number);
なぜこれが機能するのでしょうか?数値が下限を下回る場合、差は負になります。数値が範囲内にある場合、差は正であり、上限と下限の差以下になります。
この方法にはいくつかの利点があります。
実際には、数値と間隔を原点に変換し、数値が [0, D] (D = 上限 - 下限) 内にあるかどうかをテストすることで、この効率的なアルゴリズムの基礎が提供されます。下限を下回る負の数値は負の値に変換され、上限を超える数値は D より大きい値に変換されます。
以上が整数が指定された範囲内にあるかどうかを確認するより速い方法はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。