Binary coded decimal

Un article de Wikipédia, l'encyclopédie libre.

Pour les articles homonymes, voir BCD.

Le binary coded decimal (BCD), qui peut se traduire en français par décimal codé en binaire, est un système de numération utilisé en électronique pour coder des nombres d'une façon relativement proche de la représentation humaine usuelle (en base 10). En BCD, les nombres sont représentés en chiffres décimaux et chacun de ces chiffres est codé sur quatre bits :

Chiffre Bits    Chiffre Bits
    0   0000        5   0101
    1   0001        6   0110
    2   0010        7   0111
    3   0011        8   1000
    4   0100        9   1001

Pour coder un nombre tel 127 il suffit de coder chacun des chiffres 1, 2 et 7 ce qui donne 0001, 0010, 0111.

La plupart des ordinateurs stockent les données dans des bytes d'une taille de 8 bits. Deux méthodes communes permettent d'enregistrer les chiffres BCD de 4 bits dans un tel octet:

  1. ignorer les quatre bits supplémentaires de chaque octet et leur ajouter quatre bits identiques (0 ou 1 comme pour EBCDIC)
  2. enregistrer deux chiffres par octet ce qui est appelé le « packed » BCD (qui peut utiliser un signe : 1100 pour + et 1101 pour -)

Selon la méthode, le nombre 127 sera représenté comme 11110001, 11110010, 11110111 en EBCDIC ou comme 00010010, 01111100 en « packed » BCD.

Bien que le BCD gâche de l'espace (environ 1/6 de la mémoire disponible est perdue en « packed » BCD, et largement plus en « unpacked » BCD), il permet d'avoir une correspondance immédiate avec les codes de caractères ASCII représentant les chiffres : il suffit de réaliser un OU logique avec 00110000 (48 en base 10). Les grands nombres sont facilement affichés sur des afficheurs à 7 segments en séparant les entiers. Le BIOS des PCs conserve, en général, la date et l'heure en format BCD, probablement pour des raisons historiques (cela évite une conversion du binaire à l'ASCII).

Si un chiffre nécessite quatre bits, alors trois chiffres en nécessitent 12. On a alors 10^3 combinaisons. Or 10 bits suffisent pour les exprimer toutes (2^10 > 10^3).

[modifier] Electronique

BCD est très commun dans les systèmes électroniques lorsqu'une valeur numérique doit être affichée, spécialement dans les systèmes ne consistant que de circuits numériques et ne contenant pas de microprocesseur. En utilisant BCD, la manipulation des données numériques est grandement simplifiée en traitant chaque chiffre dans un seul sous-circuit. Ce fonctionnement est le plus proche du matériel d'affichage (pour un afficheur 7 segments notamment).

Si la quantité numérique était stockée et manipulée en binaire, il faudrait une interface de traduction complexe. En utilisant le BCD dans tout le circuit, le système électronique en est simplifié.