Saettigende Ganzzahl-Addition
Addieren Sie zwei Ganzzahlen und halten Sie die Summe in einer festen Bitbreite: 100 + 50 in einem vorzeichenbehafteten 8-Bit-Wort ergibt 127, statt ins Negative umzuschlagen, und die exakte Summe 150 steht daneben. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- A
- 100
- B
- 50
- Bits
- 8
- Ergebnis
- 127
- Min
- -128
- Max
- 127
- Exakte Summe
- 150
Sättigende Ganzzahl-Addition begrenzt die mathematische Summe zweier Ganzzahlen auf die Extremwerte, die in einem gewählten Festbreitenwort noch darstellbar sind, statt wie die modulare Arithmetik und die meisten maschinellen Ganzzahltypen zu umlaufen. Ingenieure, die DSP-Kerne, Schadensformeln in Spielen, Farbkanäle und Sicherheitszähler prüfen, brauchen dieses Begrenzungsverhalten mit exaktem Minimum und Maximum sowie einem klaren Saturated-Kennzeichen. Studierende, die Wrap-Around-Überlauf mit Sättigung vergleichen, brauchen ein deterministisches Orakel, das nie ein modulares Ergebnis erfindet. Dieser Rechner für sättigende Ganzzahl-Addition nimmt die Summanden a und b, eine Bitbreite von zwei bis vierundsechzig und ein optionales Signed-Kennzeichen entgegen und liefert das begrenzte Ergebnis, die exakte unbegrenzte Summe, den darstellbaren Bereich und ob eine Sättigung durch Overflow oder Underflow eintrat.
Was sättigende Addition im Gegensatz zu Wrap-Around-Überlauf bedeutet
Gewöhnliche Ganzzahladdition fester Breite ist modular: verlässt die wahre Summe das darstellbare Intervall, wrappt das Maschinenresultat, indem die Summe modulo zwei hoch der Breite reduziert wird, was von einem großen positiven Wert zu einem großen negativen springen kann oder von knapp unter null zu einem großen Positiven.
Sättigende Addition wählt eine andere Politik, die viele DSP-Befehlssätze, Medien-Codecs und sicherheitskritische Zähler bevorzugen: ist die wahre Summe größer als der darstellbare Maximalwert, wird das Ergebnis dieses Maximum; ist sie kleiner als das Minimum, wird das Ergebnis dieses Minimum; sonst gleicht das Ergebnis der wahren Summe. Es gibt keinen modularen Wrap. Für eine signierte Breite von w Bits reicht das abgeschlossene Intervall von minus zwei hoch w minus eins bis zwei hoch w minus eins, minus eins — der klassische Zweierkomplement-Bereich von int8, int16 und int32.
Für unsignierte Breite w reicht das Intervall von null bis zwei hoch w minus eins.
Wo sättigende Addition nützlich ist
Embedded- und DSP-Entwickler nutzen sättigende Addition, um ARM-QADD-artiges Verhalten, Medien-Pipeline-Stufen und Festkomma-Akkumulatoren abzubilden, ohne für eine einzige arithmetische Prüfung einen vollen Emulator aufzusetzen. Farb- und Audio-Werkzeuge sättigen oft Kanal- oder Sample-Summen bei acht oder sechzehn Bits, wenn Mischmodi vorab betrachtet werden, bevor Shader-Code festgeschrieben wird. Lehrende der Computer-Darstellung von Ganzzahlen brauchen einen direkten Kontrast zwischen modularen Wrap und Sättigung mit reproduzierbaren Zahlen von int8 bis int64.
Fehlgeschlagene Validierung wird nicht berechnet. Halten Sie Anfragen klein, pinnen Sie result und saturated in Tests und erhalten Sie reproduzierbare Begrenzungen für Hausaufgaben, CI-Orakel und Edge-Worker, ohne Tabellen für Festbreiten-Arithmetik neu zu erfinden.
Anwendungsfälle
DSP- und Festkomma-Firmware-Prüfungen
Prüfen Sie sättigende Addition gegen int8/int16/int32-Grenzen beim Modellieren von QADD-artigen Kernen oder Festkomma-Akkumulatoren ohne vollen Emulator.
Ressourcenbegrenzung in Spielen und Simulationen
Begrenzen Sie Gesundheits-, Schadens- oder Punkte-Summen auf eine gewählte Bitbreite, damit Überlauf am Maximum sättigt statt in einen negativen Wert zu wrappen.
Häufige Fragen
Wie unterscheidet sich sättigende Ganzzahl-Addition vom normalen Überlauf?
Normale Festbreiten-Addition wrappt (modulare Arithmetik). Sättigende Addition begrenzt die wahre Summe auf den darstellbaren Min- oder Max-Wert der gewählten Bitbreite und Signedness und wrappt nie.
Was bedeuten saturated und direction?
saturated ist true, wenn das Ergebnis begrenzt wurde. direction ist overflow, wenn die Summe max überschritt, underflow, wenn sie unter min fiel, und none, wenn keine Begrenzung nötig war.
Können a oder b außerhalb des Wortbereichs liegen?
Ja. Operanden dürfen beliebige sichere Ganzzahlen sein; nur die Summe wird auf min/max des Worts begrenzt. Das entspricht gängigem Rechner- und Unterrichtsgebrauch beim Erkunden außerhalb des Bereichs.
Welche Bitbreiten werden unterstützt?
Jede Breite von 2 bis 64 Bit. Standardmäßig hat das Wort ein Vorzeichen, etwa von −128 bis 127 bei 8 Bit; ohne Vorzeichen beginnt der Bereich bei null und reicht bis zwei hoch Breite minus eins.
Warum begrenzen, statt die Summe überlaufen zu lassen?
Weil ein übergelaufenes Ergebnis von einem großen positiven Wert zu einem großen negativen springen kann, eine böse Überraschung bei Audio, Farbkanälen oder Sicherheitszählern. Die Begrenzung hält das Ergebnis an der nächsten Grenze fest, wie es viele DSP-Befehlssätze und Mediencodecs tun.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/dev/saturating-add \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":100,"b":50,"bits":8}'const res = await fetch("https://api.kit.forhosting.com/dev/saturating-add", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 100,
"b": 50,
"bits": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/saturating-add",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 100,
"b": 50,
"bits": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/saturating-add", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":100,"b":50,"bits":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":100,"b":50,"bits":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/saturating-add", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"a": 100,
"b": 50,
"bits": 8
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.saturating_add",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Was sättigende Addition im Gegensatz zu Wrap-Around-Überlauf bedeutet
Dieser Rechner setzt genau diese Begrenzung um: er bildet die exakte Ganzzahlsumme von a und b mit BigInt-Arithmetik, vergleicht sie mit min und max für die gewählte Bitbreite und Signedness und liefert das begrenzte Ergebnis zusammen mit einem boolean saturated und einem direction-Feld mit none, overflow oder underflow, damit Aufrufer protokollieren oder verzweigen können, ohne die Grenzen selbst neu zu berechnen.
Eingangsvertrag, Antwortform und Fehlerverhalten
Boolesche ähnliche Zeichenketten wie true, false, yes, no, signed und unsigned werden der Bequemlichkeit halber akzeptiert. Kombinieren Sie die Antwort mit eigenen Unit-Tests, die sowohl sättigende als auch ungesättigte Pfade festnageln, damit Regressionen in der Begrenzungslogik nicht in ein Firmware-Modell oder eine Spiel-Balance-Tabelle rutschen. Senden Sie per POST einen JSON-Körper mit den Pflichtfeldern a und b als endliche Ganzzahlen (JSON-Zahlen oder Ziffernketten mit optionalem führendem Vorzeichen), deren Absolutbetrag innerhalb von Number.MAX_SAFE_INTEGER bleibt, sowie bits als Ganzzahl von zwei bis vierundsechzig. Das optionale signed ist standardmäßig true für ein signiertes Zweierkomplement-Wort; setzen Sie signed auf false für einen unsignierten Bereich ab null. Fehlende Felder, Nicht-Ganzzahlen, bits außerhalb von zwei bis vierundsechzig und nicht-boolesche signed-Werte scheitern mit invalid_input und benennen das Problem; solche Fehler werden nicht berechnet. Bei Erfolg spiegelt der Körper a, b, bits und signed; meldet min und max des Worts; meldet sum_exact als unbegrenzte mathematische Summe; meldet result als begrenzten Wert; setzt saturated auf true, wenn begrenzt wurde; und setzt direction auf none, overflow oder underflow. Werte, die sichere JavaScript-Ganzzahlen an den Bereichsenden oder in der exakten Summe überschreiten, werden als Dezimalzeichenketten ausgegeben, damit JSON exakt bleibt. Beispiel: a gleich einhundert, b gleich fünfzig, bits gleich acht, signed true liefert min minus einhundertachtundzwanzig, max einhundertsiebenundzwanzig, sum_exact einhundertfünfzig, result einhundertsiebenundzwanzig, saturated true und direction overflow — den klassischen int8-Fall sättigender Addition.
Wo eine API für sättigende Ganzzahl-Addition ihren Nutzen zeigt
Autoren von Spielen und Simulationen begrenzen Gesundheit, Schaden und Ressourcenzähler, damit Überlauf eine fast volle Leiste nie in einen negativen oder nahezu null Wert wrappt; ein öffentlicher Rechner und eine API machen diese Begrenzungsregeln in Design-Dokumenten überprüfbar. Weil die Implementierung reines Parse-Tier-A ist, kostet jeder erfolgreiche Aufruf den veröffentlichten Grundpreis $0.002 ohne Modell-Token und ohne ausgehendes Netz.
Integrationsbeispiele
Unterrichtsdemos: Überlauf gegen Sättigung
Zeigen Sie Studierenden den Unterschied zwischen modularen Wrap und sättigender Begrenzung mit deterministischen min, max, sum_exact und result für jede Breite 2–64.
Technische Fragen
Welche Bitbreiten und Signed-Modi werden unterstützt?
bits muss eine Ganzzahl von 2 bis 64 sein. signed ist standardmäßig true (Zweierkomplement-Bereich). Setzen Sie signed false für den unsignierten Bereich [0, 2^bits−1].
Was kostet der Rechner für sättigende Ganzzahl-Addition?
Das Browser-Werkzeug ist kostenlos. API-Anfragen nutzen vorab bezahltes KIT-Guthaben zu $0.002 pro erfolgreichem Aufruf; ungültige Eingabe wird nicht berechnet.