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 qui interviendraient lors de la manipulation de grands nombres dépassant la taille des circuits en arithmétique entière et obligent à recourir au flottant. Il est cependant possible de manipuler des nombres à précision arbitraire en utilisant un codage 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 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 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 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 codeuse.