Hamming-Distanz zwischen ganzen Zahlen berechnen
Die Hamming-Distanz zweier Ganzzahlen ist die Anzahl der Bitpositionen, an denen sich ihre Binärdarstellungen unterscheiden.
Im Browser ausführen – kostenlos
Dieser Rechner verwendet das Standardverfahren: Er bildet das bitweise XOR beider Werte und zählt anschließend die gesetzten Bits des Ergebnisses. Damit vergleichen Sie Flags, Masken, kompakte Kennungen, codierte Zustände oder Testvektoren, ohne Binärzeichenfolgen manuell auszurichten. Zulässig sind alle nicht negativen sicheren JavaScript-Ganzzahlen einschließlich null; ausgegeben werden das XOR und seine Binärform.
Was die Hamming-Distanz von Ganzzahlen misst
Die Hamming-Distanz wurde für gleich lange Zeichenfolgen definiert, doch Ganzzahlen lassen sich unmittelbar als Bitfolgen verstehen. Jede Zahl wird zur Basis zwei geschrieben; bei einer kürzeren Darstellung werden führende Nullen angenommen. Eine Position erhöht die Distanz um eins, wenn eine Zahl dort ein Nullbit und die andere ein Einsbit besitzt. Übereinstimmende Positionen zählen nicht. Beim Vergleich von Berechtigungsmasken erkennen Sie so die Zahl geänderter Flags, bei kompakten Zuständen die Zahl umgeschalteter binärer Merkmale. Das Ergebnis ist keine arithmetische Differenz, sondern eine Positionszahl. Nahe Zahlen können sich in vielen Bits unterscheiden, weit entfernte nur in einem. Die Beschränkung auf nicht negative sichere Ganzzahlen gewährleistet eine exakte Darstellung im API-Handler und im Browser. Null ist gültig; ihre Distanz zu einer anderen Zahl entspricht der Anzahl gesetzter Bits dieser Zahl.
Wie XOR und Bitzählung das Ergebnis liefern
Exklusives Oder, meist XOR genannt, entspricht genau der Definition eines abweichenden Bits. Es erzeugt null, wenn zwei ausgerichtete Bits gleich sind, und eins, wenn sie verschieden sind. Nach dem XOR der Ganzzahlen müssen daher nur die Einsbits gezählt werden. Die Implementierung nutzt Brian Kernighans Verfahren: In jedem Durchlauf löscht die Verknüpfung des aktuellen Werts mit dem um eins verminderten Wert dessen niedrigstes gesetztes Bit. Die Schleife läuft somit einmal je abweichender Position statt einmal je möglicher Position. Intern kommt BigInt zum Einsatz. Dadurch werden Werte nicht wie bei gewöhnlichen JavaScript-Bitoperatoren unbemerkt auf vorzeichenbehaftete 32-Bit-Ganzzahlen begrenzt. Das zurückgegebene XOR bleibt als normale Zahl sicher, weil es oberhalb der in den geprüften Eingaben vorhandenen Bits kein neues Bit setzen kann. Zusätzlich erleichtert die binäre XOR-Zeichenfolge Prüfung, Fehlersuche und Lehre.
Eingaben wählen und das Ergebnis verstehen
Geben Sie beide Werte in den Feldern a und b an. Jeder Wert muss eine Ganzzahl zwischen null und der größten exakt darstellbaren JavaScript-Ganzzahl sein. Brüche, negative Werte, numerische Zeichenfolgen, Unendlichkeiten und fehlende Felder werden abgewiesen. Die Antwort enthält xor, binary_xor und hamming_distance. Das dezimale xor eignet sich für nachfolgende Maskenoperationen, binary_xor zeigt die abweichenden Positionen und hamming_distance nennt ihre Anzahl. Führende Nullen werden weggelassen, da sie die Distanz nicht verändern. Liegen Ihre Ausgangswerte außerhalb des sicheren Bereichs, bewahren Sie sie außerhalb dieser Fähigkeit auf, statt sie zu runden; Rundung kann niedrige Bits verändern und das Ergebnis verfälschen. Häufig wird die Anzahl mit einem Grenzwert verglichen, ein Code mit einem geänderten Bit akzeptiert oder ein bekannter Testvektor geprüft. Die Operation ist symmetrisch: Der Tausch von a und b ändert nichts, und der Vergleich einer Zahl mit sich selbst ergibt immer null.
Anwendungsfälle
Funktions- oder Berechtigungsmasken vergleichen
Zählen Sie geänderte Flags zwischen zwei Ganzzahlmasken und prüfen Sie die kennzeichnende XOR-Maske.
Code für Bitoperationen validieren
Erzeugen Sie eine deterministische Solldistanz samt XOR-Darstellung für Tests, Übungen oder Prüfungen.
Änderungen codierter Zustände messen
Ermitteln Sie abweichende binäre Merkmale kompakter Zustände, ohne Bitwechsel mit Subtraktion zu verwechseln.
Häufige Fragen
Was kostet diese Fähigkeit?
Jede API-Anfrage kostet $0.002. Dieselbe deterministische Berechnung ist auch im Browser möglich.
Warum berechnet XOR die Hamming-Distanz?
XOR setzt genau dort ein Einsbit, wo sich die Eingabebits unterscheiden; deren Anzahl ist die Distanz.
Werden führende Nullen gezählt?
Nein. Sie stimmen mit den impliziten führenden Nullen der anderen nicht negativen Zahl überein.
Kann ich negative Ganzzahlen eingeben?
Nein. Dafür müssten Bitbreite und Vorzeichendarstellung festgelegt werden; zulässig sind nur nicht negative Werte.
Welcher Höchstwert wird akzeptiert?
Jede Eingabe darf eine nicht negative sichere JavaScript-Ganzzahl bis 9,007,199,254,740,991 sein.
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/hamming-distance-int \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":29,"b":15}'const res = await fetch("https://api.kit.forhosting.com/dev/hamming-distance-int", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 29,
"b": 15
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/hamming-distance-int",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 29,
"b": 15
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/hamming-distance-int", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":29,"b":15}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":29,"b":15}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/hamming-distance-int", 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": 29,
"b": 15
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.hamming_distance_int",
"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. |