Calculateur ternaire équilibré
Ce calculateur ternaire équilibré transforme un entier décimal ordinaire en une écriture de base trois dont les trits valent moins un, zéro et plus un, notés -, 0 et +.
Lancer gratuitement
Il décode également cette notation pour retrouver l’entier. Outre la forme canonique, le résultat affiche la décomposition signée en puissances de trois, le nombre total de trits, le nombre de trits non nuls et la négation immédiate. Vous pouvez ainsi apprendre ce système, contrôler un algorithme et comprendre pourquoi les chiffres signés facilitent certains calculs et certaines architectures matérielles.
Lire une représentation ternaire équilibrée
Le ternaire équilibré est une notation positionnelle fondée sur les puissances de trois, mais chaque position peut contribuer à hauteur de -1, 0 ou +1 fois sa valeur. Ce calculateur note ces trits -, 0 et +. De droite à gauche, les valeurs de position sont 3^0, 3^1, 3^2, puis les puissances suivantes. La décomposition affichée explicite chaque contribution. Ainsi, un trit positif à la position 3^3 apporte +27, tandis qu’un trit négatif à la position 3^2 apporte -9. Additionnez les contributions non nulles pour retrouver l’entier décimal. Contrairement à une valeur négative habituelle en base trois, un nombre ternaire équilibré négatif ne demande aucun signe séparé : ses contributions négatives sont déjà inscrites dans les trits. Le convertisseur produit une forme canonique unique, supprime les zéros initiaux superflus et représente zéro par un seul 0. Pour décoder, saisissez uniquement la chaîne compacte composée de +, 0 et -. Le résultat décimal reste un entier sûr exact, sans arrondi en virgule flottante.
Convertir les entiers décimaux
L’encodage procède par divisions successives par trois avec un reste équilibré. Un reste classique vaut zéro, un ou deux, mais le ternaire équilibré remplace le reste deux par -1 et reporte +1 à la position suivante, car 2 est égal à -1 plus 3. L’algorithme émet donc 0 pour un reste nul, + pour un reste égal à un et - pour un reste égal à deux après le report. Cette règle s’applique aux entiers positifs comme négatifs et réduit finalement tout entier sûr à zéro. Le décodage suit l’opération inverse de gauche à droite : il multiplie la valeur accumulée par trois, puis ajoute la valeur du trit courant. Les deux traitements utilisent en interne une arithmétique entière exacte. Le résultat indique aussi le nombre total de trits et le nombre de trits non nuls. Cette seconde mesure aide à étudier les formes signées creuses, puisque les positions nulles n’apportent aucun terme. Les valeurs hors de l’intervalle sûr, les fractions, les exposants, les espaces internes et les symboles inconnus sont refusés par une erreur d’entrée explicite.
L’intérêt arithmétique des trits signés
L’avantage le plus évident concerne la négation : remplacez chaque + par - et chaque - par +, sans modifier les zéros. Aucun bit de signe distinct ni complément sur une largeur fixe n’est nécessaire ; le calculateur renvoie donc directement la représentation opposée. Les chiffres signés rendent aussi les quantités positives et négatives symétriques. Cette propriété facilite l’explication de la soustraction et la conception d’algorithmes qui choisissent une puissance de trois proche, puis compensent par un trit négatif. Des retenues restent possibles pendant une addition, mais les chiffres équilibrés proposent des règles locales symétriques et peuvent limiter les longues propagations orientées dans certaines architectures. Le nombre de trits non nuls illustre une autre idée utile : une multiplication par une constante peut devenir une suite d’additions et de soustractions de puissances de trois, les positions nulles étant ignorées. Le ternaire équilibré ne remplace pas toujours le binaire et ne garantit pas une accélération sur toute machine. Cet outil sert à l’enseignement, aux expériences sur les chiffres signés, aux exercices de programmation et à la vérification de calculs manuels.
Cas d’usage
Enseigner la notation positionnelle signée
Montrez comment les contributions négatives et les puissances de trois se combinent sans signe séparé.
Contrôler un code de conversion
Comparez une implémentation à des résultats déterministes : décimal, trits canoniques, décomposition et négation.
Explorer les représentations arithmétiques
Examinez les trits non nuls et les signes inversés pour étudier constantes creuses, soustraction ou matériel équilibré.
Questions fréquentes
Quels symboles ce calculateur emploie-t-il ?
Il emploie + pour plus un, 0 pour zéro et - pour moins un. Chaque position correspond à une puissance de trois.
Comment saisir un nombre ternaire équilibré négatif ?
Placez des trits négatifs dans la représentation. Il n’existe aucun signe initial distinct ; la chaîne compacte contient seulement +, 0 et -.
Pourquoi un reste de deux devient-il un trit négatif ?
Parce que 2 s’écrit -1 plus un groupe de 3 reporté. Le trit courant devient - et la position suivante augmente de un.
Comment effectuer la négation ?
Inversez + et - à chaque position et conservez 0. Le champ negated_balanced_ternary affiche le résultat.
Quel intervalle est accepté ?
Les valeurs décimales et les résultats décodés doivent rester entre les limites négative et positive des entiers sûrs JavaScript, incluses.
Quel est le tarif ?
L’exécution dans votre navigateur est gratuite sur cette page. Chaque requête API coûte $0.002 par élément.
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/balanced-ternary \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":"42","direction":"to_balanced_ternary"}'const res = await fetch("https://api.kit.forhosting.com/dev/balanced-ternary", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": "42",
"direction": "to_balanced_ternary"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/balanced-ternary",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": "42",
"direction": "to_balanced_ternary"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/balanced-ternary", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":"42","direction":"to_balanced_ternary"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":"42","direction":"to_balanced_ternary"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/balanced-ternary", 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
{
"value": "42",
"direction": "to_balanced_ternary"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.balanced_ternary",
"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.
Limites
max_abs | 9007199254740991 |
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. |