Heim  >  Artikel  >  Backend-Entwicklung  >  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
Susan SarandonOriginal
2024-11-22 08:48:14923Durchsuche

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;

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

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!

Stellungnahme:
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