Système trinaire
Le système ternaire (ou trinaire) est le système de numération utilisant la base trois. Les chiffres ternaires sont connus sous le nom trit (trinary digit), de manière analogue à bit.
Bien que la plupart du temps, cela fait référence à un système dans lequel les trois chiffres, 0, 1 et 2, sont tous des nombres entiers positifs, l'adjectif qualifie aussi le système ternaire balancé, utilisé pour la comparaison logique.
Sommaire |
Comparé à la base 10 et 2 [modifier]
| Décimal | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Binaire | 0 | 1 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 | 1001 | 1010 |
| Ternaire | 0 | 1 | 2 | 10 | 11 | 12 | 20 | 21 | 22 | 100 | 101 |
Notation ternaire balancée [modifier]
Un système de numération appelé ternaire balancé (en) utilise des chiffres avec les valeurs -1, 0, et 1. Cette combinaison est particulièrement intéressante pour les relations ordinales entre deux valeurs, où les trois relations possibles sont inférieur à, égal, et supérieur à. Le ternaire balancé est compté comme suit : (dans cet exemple, le symbole 1 désigne le chiffre -1, mais de manière alternative pour un usage plus facile - peut être utilisé pour désigner -1 et + pour désigner +1.)
| Décimal | -6 | -5 | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Ternaire balancé | 110 | 111 | 11 | 10 | 11 | 1 | 0 | 1 | 11 | 10 | 11 | 111 | 110 |
Le ternaire non-balancé peut être converti en notation ternaire balancé en ajoutant 1111.. avec retenue, puis en soustrayant 1111... sans retenue. Par exemple, 0213 + 1113 = 2023, 2023 - 1113 = 1113(bal) = 710.
Utilisation du ternaire balancé [modifier]
En électronique [modifier]
Le ternaire balancé est facilement représenté par les signaux électroniques, comme potentiel pouvant être soit négatif, neutre ou positif. Par conséquent, un fil électrique peut transporter plus d'informations en ternaire (trois états) que en binaire (deux états). Ainsi, le système ternaire en électronique permet de réduire le nombre de composants, et donc la consommation électrique. L'avantage peut se calculer avec log(3)/log(2)=~1,589 bits par trit. Soit environ 60 % d'informations en plus dans un trit que dans un bit, ou plus pragmatiquement environ 40 % de fils électriques en moins (pour la même quantité d'informations).
En développement logiciel [modifier]
Les processeurs des ordinateurs effectuent des comparaisons de nombres. Trois cas se présentent : un nombre est supérieur, égal ou inférieur à un autre. Cette comparaison entre deux nombres se réalise en soustrayant ces deux nombres, le résultat étant stocké dans un registre du processeur. Le registre d'état (en) associé indique alors si le résultat est négatif, nul ou positif (le drapeau Zero indique si nul ou pas et le drapeau Sign indique le signe).
Cette capacité ternaire des processeur est quelquefois exploitée pour réaliser des opérations rapides. Par exemple, prenons le cas d'une fonction retournant un code pouvant prendre trois état différents. De façon académique, cette fonction est implémentée en retournant un type énuméré avec trois valeurs possibles. Le code de retour de cette fonction doit donc être comparé à chacune de ces trois valeurs pour réaliser l'opération associée à chaque état. En utilisant cette capacité du processeur, cette fonction peut être implémentée en retournant un entier signé. Déterminer le code de retour est alors bien plus rapide car ce sont les drapeaux (bits) du registre d'état qui sont directement vérifiés.
Exemple de fonction en C exploitant la capacité ternaire du processeur à distinguer les nombres négatifs, nuls et positifs.
int fonction () { int code_retour; // [...] traitement qui change la valeur du 'code_retour' return code_retour; } void utilisateur() { int code = fonction (); if (code == 0) //vérifie le bit 'Zero' du registre d'état code_nul(); // => opération associée au code nul else if (code > 0) //vérifie le bit 'Sign' du registre d'état code_positif(); // => opération associée au code positif else code_negatif(); // => opération associée au code négatif }
En transaction monétaire [modifier]
Un système monétaire utilisant le ternaire balancé épargnerait des visites à la banque - les clients aimeraient avoir une transaction exacte, ou avoir un petit nombre de pièces pour la transaction, et les vendeurs aurait besoin de déposer occasionnellement une grosse pièce ou deux. Le système fonctionne en représentant les valeurs positives pour les pièces que le client donne au marchand, et les valeurs négatives pour les pièces que le marchand donne au client. Par exemple, si un marchand vend un article pour 5 zorkmid (en), le client donnerait au marchand une pièce de 9 zorkmid, et le marchand donnerait au client une pièce de 3 zorkmid et une pièce de 1 zorkmid.
Dans d'autres domaines [modifier]
Le ternaire balancé possède d'autres applications. Par exemple, une balance classique à deux plateaux, avec un poids pour chaque puissance de 3, peut peser des objets relativement lourds avec précision avec un petit nombre de poids, en déplaçant les poids entre les deux plateaux et la table. Par exemple, avec des poids pour chaque puissance de 3 jusqu’à 81, un objet de 60 g sera pesé parfaitement avec un poids de 81 g sur l'autre plateau, le poids de 27 g dans le premier plateau, le poids de 9 g dans l'autre plateau, le poids de 3 g dans le premier plateau, et le poids de 1 g restant de côté. Ceci est une solution optimale en termes de nombre de poids nécessaires pour peser tout objet. 60 = 11110
Représentation ternaire compacte [modifier]
Le système ternaire est inefficient pour l'usage humain, tout comme le binaire.[réf. nécessaire] Par conséquent, le système nonaire (base 9, chaque chiffre représente deux chiffres de base 3) ou le système septemvigésimal (en) (base 27) (chaque chiffre représente 3 chiffres de base 3) est souvent utilisé, de manière similaire à l'utilisation du système octal et du système hexadécimal à la place du système binaire. Le système ternaire possède aussi l'analogue d'un byte, appelé un tryte.
Voir aussi [modifier]
Articles connexes [modifier]
Liens externes [modifier]
- (en) Development of ternary computers at Moscow State University
- (en) Third Base, sur le site de American Scientist
- (en) Nikolay Brusentsov - the Creator of the Trinary Computer, au musée virtuel de l'informatique de Kiev
- (en) Balanced Ternary Web Pages par J. Allwright, université de Westminster
- (en) Ternary Arithmetic par S. Whealton, sur washingtonart.net
- (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Ternary numeral system » (voir la liste des auteurs)