Système trinaire

Un article de Wikipédia, l'encyclopédie libre.
Aller à : Navigation, rechercher

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]

Ternaire standard
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.)

Ternaire balancé
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]