Start · Sprachen · PHP · Referenz · gmp_add

gmp_add

Funktion

Addiert zwei beliebig große Ganzzahlen und gibt das Ergebnis als <code>GMP</code>-Objekt zurück.

seit PHP 4.0.4 Kategorie: math

Signatur

gmp_add(GMP|int|string $num1, GMP|int|string $num2): GMP

Beschreibung

gmp_add() gehört zur GNU Multiple Precision (GMP)-Erweiterung und ermöglicht die Addition von Ganzzahlen beliebiger Größe – also weit über den Wertebereich von PHP-nativen int-Typen hinaus. Dies ist besonders nützlich in der Kryptografie, bei der Verarbeitung großer Primzahlen oder in wissenschaftlichen Berechnungen.

Die Argumente können als GMP-Objekte, als PHP-int-Werte oder als numerische Zeichenketten (auch in anderen Zahlensystemen wie Hexadezimal oder Oktal) übergeben werden. PHP konvertiert diese intern automatisch in GMP-Objekte.

Das Ergebnis ist stets ein GMP-Objekt. Um es als normale PHP-Zahl oder Zeichenkette weiterzuverwenden, muss es mit gmp_intval() oder gmp_strval() konvertiert werden.

Negative Zahlen werden vollständig unterstützt, da GMP vorzeichenbehaftete Arithmetik beherrscht.

Parameter

Name Typ Default Beschreibung
$num1 Pflicht GMP|int|string Erster Summand. Kann ein GMP-Objekt, ein PHP-Integer oder eine numerische Zeichenkette (dezimal, hexadezimal mit Präfix 0x oder oktal mit Präfix 0) sein.
$num2 Pflicht GMP|int|string Zweiter Summand. Gleiche Typen wie num1 sind erlaubt.

Rückgabewert

Typ
GMP
Beschreibung
Ein GMP-Objekt, das die Summe der beiden Operanden darstellt. Für die Ausgabe als Zeichenkette gmp_strval(), als Integer gmp_intval() verwenden.

Beispiele

Einfache Addition zweier großer Zahlen

<?php
// GMP-Erweiterung muss aktiviert sein
$a = gmp_init('99999999999999999999');
$b = gmp_init('1');

$summe = gmp_add($a, $b);

echo gmp_strval($summe); // Ausgabe als Zeichenkette
100000000000000000000

Addition mit gemischten Typen (int und GMP-String)

<?php
// Direkte Übergabe von int und String — PHP konvertiert automatisch
$ergebnis = gmp_add(42, '1000000000000000000000');

echo gmp_strval($ergebnis);
1000000000000000000042

Addition negativer Zahlen

<?php
$a = gmp_init('-500');
$b = gmp_init('300');

$summe = gmp_add($a, $b);

echo gmp_strval($summe);
-200

Kryptografisches Beispiel: Modulare Addition großer Primzahlen

<?php
// Typisches Muster in Public-Key-Kryptografie
$p = gmp_init('FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F', 16);
$q = gmp_init('1');

$summe = gmp_add($p, $q);

echo gmp_strval($summe, 16); // Ergebnis hexadezimal
fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc30

// Wichtig · Fallstricke

Voraussetzung: Die GMP-Erweiterung muss in PHP aktiviert sein (--with-gmp beim Kompilieren oder als Shared Extension geladen). Ohne GMP führt der Aufruf zu einem fatalen Fehler.

Ab PHP 5.6 werden GMP-Objekte zurückgegeben; in älteren Versionen waren es GMP-Ressourcen. Code, der auf Ressourcen prüft (is_resource()), muss entsprechend angepasst werden.

Für sehr leistungskritische Anwendungen mit vielen Operationen empfiehlt es sich, GMP-Objekte wiederzuverwenden statt sie wiederholt aus Zeichenketten zu initialisieren, um Konvertierungskosten zu vermeiden.