Heim > Backend-Entwicklung > C++ > Gibt es eine schnellere Möglichkeit, zu überprüfen, ob eine ganze Zahl innerhalb eines bestimmten Bereichs liegt?

Gibt es eine schnellere Möglichkeit, zu überprüfen, ob eine ganze Zahl innerhalb eines bestimmten Bereichs liegt?

Barbara Streisand
Freigeben: 2024-12-10 03:28:21
Original
956 Leute haben es durchsucht

Is There a Faster Way to Check if an Integer Falls Within a Given Range?

Schnellste Methode, um zu bestimmen, ob eine ganze Zahl zwischen zwei ganzen Zahlen liegt (einschließlich)

Die Bestimmung, ob eine ganze Zahl zwischen zwei anderen ganzen Zahlen liegt, ist eine übliche Methode Operation, und der traditionelle Ansatz beinhaltet die Verwendung von logischem UND und Ungleichung Vergleiche:

x >= start && x <= end
Nach dem Login kopieren

Gibt es jedoch eine schnellere Alternative?

Eine mögliche Optimierung besteht darin, einen einzelnen Vergleich/Zweig zu verwenden. Dieser Ansatz funktioniert, indem die Zahl sowie die Unter- und Obergrenzen in ganze Zahlen ohne Vorzeichen umgewandelt und deren Differenz verglichen werden:

if ((unsigned)(number-lower) <= (upper-lower))
    in_range(number);
Nach dem Login kopieren

Warum funktioniert das? Liegt die Zahl unter der Untergrenze, ist die Differenz negativ. Wenn die Zahl innerhalb des Bereichs liegt, ist die Differenz positiv und kleiner oder gleich der Differenz zwischen der Ober- und Untergrenze.

Diese Methode hat mehrere Vorteile:

  • Reduziert Verzweigungsanweisungen (nur ein Vergleich erforderlich).
  • Verbesserte Verzweigungsvorhersage (dieselbe Verzweigung wird unabhängig von der Position der Zahl relativ zur genommen Bereich).
  • Verbesserte Leistung durch Vorberechnung der Differenz zwischen Ober- und Untergrenze (Minimierung des Zeitaufwands).

In der Praxis werden die Zahl und das Intervall auf den Ursprungspunkt übertragen und Das Testen, ob die Zahl innerhalb von [0, D] liegt, wobei D = oben – unten, bildet die Grundlage für diesen effizienten Algorithmus. Negative Zahlen unterhalb der Untergrenze führen zu negativen Werten, während Zahlen über der Obergrenze zu Werten größer als D führen.

Das obige ist der detaillierte Inhalt vonGibt es eine schnellere Möglichkeit, zu überprüfen, ob eine ganze Zahl innerhalb eines bestimmten Bereichs liegt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage