Heim > Backend-Entwicklung > C++ > Wie berechnet man die Obergrenze der Ganzzahldivision in C/C ohne Multiplikation oder Gleitkommaoperationen?

Wie berechnet man die Obergrenze der Ganzzahldivision in C/C ohne Multiplikation oder Gleitkommaoperationen?

Susan Sarandon
Freigeben: 2024-11-22 08:48:14
Original
985 Leute haben es durchsucht

How to Calculate the Ceiling of Integer Division in C/C   without Multiplication or Floating-Point Operations?

Obergrenze der Ganzzahldivision ohne Multiplikation oder Gleitkommaumwandlung

In C und C gibt die Ganzzahldivision (x/y) die Untergrenze zurück des Ergebnisses. Um stattdessen die Obergrenze zu berechnen und Gleitkomma-Umwandlung und zusätzliche Multiplikation zu vermeiden, sollten Sie die folgenden Methoden in Betracht ziehen:

1. Verwendung von (x y - 1) / y:

unsigned int x, y, q;
// Round up
q = (x + y - 1) / y;
Nach dem Login kopieren

Diese Formel stellt sicher, dass die Obergrenze berechnet wird, da vor der Division 1 addiert wird.

2. Überlauf in (x y) vermeiden:

Um einen ganzzahligen Überlauf beim Addieren von x und y zu verhindern, ist eine alternative Methode:

q = 1 + ((x - 1) / y); // if x != 0
Nach dem Login kopieren

Diese Formulierung erhöht die Obergrenze effektiv um 1, außer wenn x 0 ist, bleibt es 0.

Das obige ist der detaillierte Inhalt vonWie berechnet man die Obergrenze der Ganzzahldivision in C/C ohne Multiplikation oder Gleitkommaoperationen?. 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