Heim > Backend-Entwicklung > PHP-Tutorial > Analysieren Sie den Grund, warum 8%-3 in PHP Null ist

Analysieren Sie den Grund, warum 8%-3 in PHP Null ist

PHPz
Freigeben: 2024-01-26 10:46:02
Original
950 Leute haben es durchsucht

Analysieren Sie den Grund, warum 8%-3 in PHP Null ist

Entdecken Sie, warum 8%-3 in PHP gleich 0 ist

Die meisten Menschen stoßen auf seltsame Situationen, wenn sie mathematische Operationen in der PHP-Sprache ausführen. Eine davon besteht darin, 8 % (Modulo 3) zu berechnen, was 0 ergibt. Dieses Ergebnis sieht etwas seltsam aus, da 8 theoretisch nicht durch 3 geteilt werden kann, es also einen Rest geben sollte.

Bevor wir näher darauf eingehen, werfen wir zunächst einen Blick auf den Modulo-Operator „%“ in PHP. Mit der Modulo-Operation wird der Rest zwischen zwei Zahlen berechnet. Die spezifische Operation besteht darin, die erste Zahl durch die zweite Zahl zu dividieren und dann den Rest als Ergebnis zu verwenden.

In PHP ist ein wichtiges Prinzip der Modulo-Operationsregeln: Das Vorzeichen des Modulo-Ergebnisses stimmt mit dem Vorzeichen des Moduls überein. Wenn also der Modul positiv ist, ist auch das Modulo-Ergebnis positiv. Wenn der Modul negativ ist, ist auch das Modulo-Ergebnis negativ.

Zurück zu unserem Beispiel: 8 %-3 sollte einen negativen Rest zurückgeben, nicht 0. Aber warum gibt PHP 0 zurück?

Die Antwort auf diese Frage beinhaltet tatsächlich einige mathematische und Programmierkonzepte aus der Informatik.

Zuerst müssen wir verstehen, wie Ganzzahlen in PHP dargestellt werden. In PHP können Ganzzahlen in zwei Typen unterteilt werden: Ganzzahlen mit Vorzeichen (Signed Integer) und Ganzzahlen ohne Vorzeichen (Integer ohne Vorzeichen). Vorzeichenbehaftete Ganzzahlen sind Ganzzahlen, die durch positive und negative Vorzeichen dargestellt werden können, während vorzeichenlose Ganzzahlen nur nichtnegative Ganzzahlen darstellen können.

Standardmäßig sind Ganzzahlen in PHP vorzeichenbehaftete Ganzzahlen. Das bedeutet, dass 8 und -3 beide ganze Zahlen mit Vorzeichen sind. Wenn wir 8 %-3 berechnen, wandelt PHP die beiden Zahlen in denselben Typ um und führt dann die Berechnung durch.

In diesem Fall wird 8 in eine vorzeichenbehaftete Ganzzahl umgewandelt und ihre binäre Darstellung ist 00000000000000000000000000001000. Und -3 wird auch in eine vorzeichenbehaftete Ganzzahl umgewandelt, und ihre binäre Darstellung ist 111111111111111111111111111101.

Als nächstes führt PHP eine Modulo-Operation für diese beiden Zahlen durch. Tatsächlich verwendet PHP die folgende Formel, um das ganzzahlige Modulo zu berechnen:

a % b = a - b * floor(a / b)

Lassen Sie uns gemäß dieser Formel das Ergebnis von 8%-3 berechnen:

8 - (-3) floor(8 / -3) = 8 - (-3) -2 = 8 - 6 = 2

Nach dieser Berechnung ist das Ergebnis, das wir erhalten, 2, nicht die Ganzzahlmoduloperation The Das Standardergebnis ist 0. Warum ist das?

Der Grund dafür ist, dass der ganzzahlige Modulo-Operator „%“ in PHP nicht vollständig der mathematischen Definition entspricht. Nach traditionellen mathematischen Definitionen sollte das Ergebnis der Modulo-Operation zwischen 0 und dem Modul liegen. Wenn in PHP der Modul eine negative Zahl ist, ist das Ergebnis der Modulo-Operation ein negativer Rest minus dem Absolutwert des Moduls.

Wenn in unserem Beispiel also 8 als Modul verwendet wird, ist 2 ein zulässiges Modulo-Ergebnis. Da wir uns jedoch auf die Situation konzentrieren, in der der Modul negativ ist, ist das Endergebnis 0.

Zusammenfassend lässt sich sagen, dass der Grund, warum 8%-3 in PHP gleich 0 ist, darin besteht, dass PHPs Design des Modulo-Operators „%“ nicht vollständig der traditionellen mathematischen Definition entspricht, sondern das Ergebnis entsprechend dem Vorzeichen anpasst Modul.

Obwohl dieses Ergebnis etwas seltsam aussieht, können wir in der tatsächlichen Programmierung mathematische Operationen gemäß dieser Regel ausführen und verarbeiten, um unerwartete Ergebnisse zu vermeiden.

Zusammenfassung

In diesem Artikel wird untersucht, warum 8%-3 in PHP 0 entspricht. Durch die Analyse der vorzeichenbehafteten und vorzeichenlosen Darstellung von Ganzzahlen in PHP sowie der Definition der Ganzzahl-Modulo-Operation haben wir erfahren, dass der Modulo-Operator „%“ von PHP nicht vollständig der traditionellen mathematischen Definition entspricht. Es ist erwähnenswert, dass wir bei der tatsächlichen Programmierung diese Regel verstehen und mathematische Operationen angemessen handhaben sollten, um die erwarteten Ergebnisse zu erzielen.

Das obige ist der detaillierte Inhalt vonAnalysieren Sie den Grund, warum 8%-3 in PHP Null ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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
Aktuelle Ausgaben
PHP-Datenerfassung?
Aus 1970-01-01 08:00:00
0
0
0
PHP-Erweiterung intl
Aus 1970-01-01 08:00:00
0
0
0
Wie man PHP gut lernt
Aus 1970-01-01 08:00:00
0
0
0
Mehrere PHP-Versionen
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage