Ce codage consiste à représenter chacun des chiffres de la numérotation décimale sur 4 bits:
1994 = 0001 1001 1001 0100 1×1000 + 9×100 + 9×10 + 4×1
Il présente l'avantage de simplifier la conversion avec la notation décimale.
Avec n bits (n multiple de 4), il est possible de représenter les nombres entre 0 et 10n/4-1. Soit approximativement entre 0 et 1.778n-1. Le BCD est un code redondant, en effet certaines combinaisons ne sont pas utilisées (comme 1111 par exemple).
Cette représentation évite par construction tous les problèmes gênants de cumul d'arrondi (Un arrondi d'un nombre est une valeur approchée de ce nombre obtenue, à partir de son...) qui interviendraient lors de la manipulation de grands nombres dépassant la taille des circuits en arithmétique (L'arithmétique est une branche des mathématiques qui comprend la partie de la...) entière et obligent à recourir au flottant. Il est cependant possible de manipuler des nombres à précision arbitraire en utilisant un codage (De façon générale un codage permet de passer d'une représentation des...) plus efficace que le BCD.
Il existe des variantes du codage BCD :
Ce codage permet de ne faire changer qu'un seul bit à la fois quand un nombre (La notion de nombre en linguistique est traitée à l’article « Nombre...) est incrémenté ou décrémenté d'une unité.
Le code de Gray, également appelé binaire réfléchi, permet de ne faire changer qu'un seul bit à la fois quand un nombre est incrémenté ou décrémenté d'une unité. Le nom du code vient de l'ingénieur (« Le métier de base de l'ingénieur consiste à résoudre des problèmes de nature...) américain Frank Gray qui déposa un brevet sur ce code en 1953. Monsieur Louis Gros publia en 1872 un opuscule où ce code était présenté pour la première fois en lien avec un casse-tête. Monsieur Gros était clerc de notaire à Lyon.
codage binaire classique | Codage Gray ou binaire réfléchi | ||
---|---|---|---|
0 | 0000 | 0 | 0000 |
1 | 0001 | 1 | 0001 |
2 | 0010 | 2 | 0011 |
3 | 0011 | 3 | 0010 |
4 | 0100 | 4 | 0110 |
5 | 0101 | 5 | 0111 |
6 | 0110 | 6 | 0101 |
7 | 0111 | 7 | 0100 |
Pour "calculer" directement le code de Gray d'un entier à partir de celui de son prédécesseur on peut procéder ainsi :
- lorsqu'il y a un nombre pair de 1 on inverse (En mathématiques, l'inverse d'un élément x d'un ensemble muni d'une loi de...) le dernier bit
- lorsqu'il y a un nombre impair de 1 on inverse le bit directement a gauche du 1 le plus a droite.
Le code de Gray est utilisé entre autres sur une Roue (La roue est un organe ou pièce mécanique de forme circulaire tournant autour d'un axe...) codeuse.