Calculateur de distance de Hamming entre entiers
La distance de Hamming entre deux entiers indique le nombre de positions où leurs représentations binaires diffèrent.
Lancer gratuitement
Ce calculateur applique la méthode standard : il effectue le XOR bit à bit des deux valeurs, puis compte les bits à un du résultat. Vous pouvez ainsi comparer des indicateurs, des masques, des identifiants compacts, des états codés ou des vecteurs de test sans aligner manuellement des chaînes binaires. Tous les entiers sûrs JavaScript positifs ou nuls sont acceptés, et le résultat fournit le XOR sous forme décimale et binaire.
Ce que mesure la distance de Hamming des entiers
La distance de Hamming a d’abord été définie pour des chaînes de même longueur, mais les entiers s’interprètent naturellement comme des chaînes de bits. Chaque entier est écrit en base deux et des zéros initiaux sont supposés lorsque sa représentation est plus courte. Une position ajoute un à la distance si un entier contient un bit zéro et l’autre un bit un ; les positions identiques ne comptent pas. La comparaison de masques d’autorisations révèle ainsi le nombre d’indicateurs modifiés, tandis que celle d’états compacts dénombre les caractéristiques binaires basculées. Le résultat compte des positions et ne représente pas l’écart arithmétique. Deux valeurs proches peuvent différer sur de nombreux bits, et deux valeurs éloignées sur un seul. Les entiers sûrs positifs ou nuls garantissent une représentation exacte dans l’API comme dans le navigateur. Zéro est valide, et sa distance avec un entier correspond au nombre de bits à un de cet entier.
Comment XOR et le comptage des bits donnent la réponse
Le OU exclusif, généralement noté XOR, convient exactement à cette mesure : il produit zéro lorsque deux bits alignés sont identiques et un lorsqu’ils diffèrent. Après le XOR des deux entiers, il suffit donc de compter les bits à un. L’implémentation emploie la méthode de Brian Kernighan. À chaque itération, la soustraction de un puis un AND bit à bit effacent le bit à un de poids le plus faible. La boucle s’exécute ainsi une fois par position différente, et non pour chaque position possible. Le calcul interne utilise BigInt afin d’éviter que les opérateurs binaires ordinaires de JavaScript ne réduisent silencieusement les valeurs à des entiers signés de 32 bits. Le XOR reste représentable comme nombre ordinaire, puisqu’il ne peut créer de bit supérieur à ceux des entrées sûres validées. Sa chaîne binaire est également fournie afin de faciliter les contrôles, le débogage et l’apprentissage.
Choisir les entrées et lire le résultat
Renseignez les deux valeurs dans les champs a et b. Chacune doit être un entier compris entre zéro et le plus grand entier exactement représentable en JavaScript ; les fractions, valeurs négatives, chaînes numériques, infinis et champs absents sont refusés. La réponse contient xor, binary_xor et hamming_distance. Le XOR décimal sert aux opérations de masque ultérieures, binary_xor indique précisément les positions différentes et hamming_distance en donne le nombre. Les zéros initiaux sont omis, car ils ne changent jamais la distance. Si vos valeurs dépassent la plage sûre, conservez-les hors de cette capacité plutôt que de les arrondir : l’arrondi peut modifier les bits faibles et fausser la mesure. Une intégration peut comparer le total à un seuil, accepter un code présentant un seul bit modifié ou vérifier des vecteurs connus. L’opération est symétrique : permuter a et b ne change rien, et comparer une valeur à elle-même produit toujours zéro.
Cas d’usage
Comparer des masques de fonctions ou d’autorisations
Comptez les indicateurs modifiés entre deux masques entiers et examinez le masque XOR qui les identifie.
Valider du code de manipulation binaire
Produisez une distance attendue déterministe et une représentation XOR pour des tests ou des exercices.
Mesurer des changements d’état codé
Résumez les caractéristiques binaires différentes entre deux états compacts sans les confondre avec une soustraction.
Questions fréquentes
Quel est le tarif de cette capacité ?
Chaque requête API coûte $0.002. Le même calcul déterministe peut aussi s’exécuter dans le navigateur.
Pourquoi XOR permet-il de calculer la distance de Hamming ?
XOR place un bit à un exactement là où les bits d’entrée diffèrent ; leur comptage donne directement la distance.
Les zéros initiaux sont-ils comptés ?
Non. Ils correspondent aux zéros initiaux implicites de l’autre entier positif ou nul et n’ajoutent aucune distance.
Puis-je fournir des entiers négatifs ?
Non. Ils exigent une largeur et une représentation signée choisies ; seuls les entiers positifs ou nuls sont admis.
Quelle est la valeur maximale acceptée ?
Chaque entrée peut être un entier sûr JavaScript positif ou nul, jusqu’à 9,007,199,254,740,991.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre 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)Exemple de requête
{
"a": 29,
"b": 15
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.hamming_distance_int",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |