Outil pour convertir en code Gray. Le code de Gray, aussi appelé binaire réfléchi, est un système binaire ne changeant qu'un seul bit à chaque incrémentation d'une unité.
Code Gray - dCode
Catégorie(s) : Codage de Caractères, Electronique
dCode est gratuit et ses outils sont une aide précieuse dans les jeux, les maths, les énigmes, les géocaches, et les problèmes à résoudre au quotidien !
Une suggestion ? un problème ? une idée ? Écrire à dCode !
Le code Gray aussi appelé binaire réfléchi est un code binaire ayant la propriété de ne modifier qu'un seul bit lorsqu'un nombre est augmenté (ou diminué) d'une unité.
Exemple :
Nombre | Binaire | Gray |
---|---|---|
0 | 0000 | 0000 |
1 | 0001 | 0001 |
2 | 0010 | 0011 |
3 | 0011 | 0010 |
4 | 0100 | 0110 |
5 | 0101 | 0111 |
6 | 0110 | 0101 |
7 | 0111 | 0100 |
8 | 1000 | 1100 |
Cette propriété peut avoir plusieurs applications pratiques intéressantes, et le code gray apparaît dans le code Baudot, dans la résolution des tours de Hanoi, ou les encodeurs de positions.
Pour transformer du binaire en binaire réfléchi (code Gray), l'algorithme consiste à calculer le OU exclusif (XOR) entre la valeur binaire et elle-même mais décalée d'un rang à droite (le dernier bit est supprimé).
Exemple : $$ \begin{align} 1 0 1 1 & \\ \oplus \rightarrow 1 0 1 & (1) \\ = 1 1 1 0 & \end{align} $$ Le code binaire 1011 a pour la valeur 1110 dans sa version réfléchie en code Gray.
L'implémentation de l'algorithme en langage informatique se réalise en une ligne et utilise les opérateurs binaires xor et shift : function bin2gray(n) return n ^ (n >> 1)
Un algorithme de conversion d'un entier en code Gray (binaire) utilise des divisions successives par des puissances de 2 et regarde la parité de l'arrondi du quotient obtenu.
Exemple : $$ \begin{align} 29 / 2 = 14.5 \approx 15 & \Rightarrow 1 \\ 29 / 4 = 7.25 \approx 7 & \Rightarrow 1 \\ 29 / 8 = 3.625 \approx 4 & \Rightarrow 0 \\ 29 / 16 = 1.8125 \approx 2 & \Rightarrow 0 \\ 29 / 32 = 0.90625 \approx 1 & \Rightarrow 1 \end{align} $$ La valeur décimale 29 a pour la valeur binaire 10011 en code Gray.
Une méthode de conversion, plus visuelle, est décrite par cette image :
La conversion du code Gray peut se faire bit à bit. Soit un nombre $ G = {g_0,g_1,\dots,g_n} $ avec $ g_i $ chacun de ses bits, alors $ B = {b_0,b_1,\dots,b_n} $ se calcule ainsi : $$ b_0 = g_0 \\ b_1 = g_0 \oplus g_1 \\ b_2 = g_0 \oplus g_1 \oplus g_2 \\ b_n = g_0 \oplus g_1 \oplus \dots \oplus g_n $$
En code gray, le bit de poids fort ($ g_0 $, souvent à gauche) est toujours identique à celui en binaire ($ b_0 $).
L'implémentation du calcul de conversion utilise aussi les opérateurs binaires xor et shift : function gray2bin(n1) {
n2 = n1;
while (n1 >>= 1) n2 ^= n1;
return n2;
}
Le code Gray permet de compter en binaire en modifiant un seul bit pour passer d'un nombre au suivant. Voici les 16 premièves valeurs en code gray 4 bits :
0000, 0001, 0011, 0010, 0110, 0111, 0101, 0100, 1100, 1101, 1111, 1110, 1010, 1011, 1001, 1000
Les premières valeurs décimales équivalentes sont : 0, 1, 3, 2, 6, 7, 5, 4, 12, 13, 15, 14, 10, 11, 9, 8, 24, 25, 27, 26, 30, 31, 29, 28, 20, 21, 23, 22, 18, 19, 17, 16, etc. ici
Le code gray permet de ne modifier qu'un seul bit à la fois lors des incréments ce qui simplifie les calculs et les accélère dans certains cas.
Le code gray est difficile à distinguer d'un autre code binaire.
La couleur grise (gray ou grey en anglais) est un indice.
Le code Gray est protégé par un brevet datant de 1953.
dCode se réserve la propriété du code source pour "Code Gray". Tout algorithme pour "Code Gray", applet ou snippet ou script (convertisseur, solveur, chiffrement / déchiffrement, encodage / décodage, encryptage / décryptage, traducteur) ou toutes fonctions liées à "Code Gray" (calculer, convertir, résoudre, décrypter / encrypter, déchiffrer / chiffrer, décoder / encoder, traduire) codés en langage informatique (Python, Java, C#, PHP, Javascript, Matlab, etc.) ou toute base de données, ou accès API à "Code Gray" ou tout autre élément ne sont pas publics (sauf licence open source explicite type Creative Commons). Idem avec le téléchargement pour un usage hors ligne sur PC, mobile, tablette, appli iPhone ou Android.
Rappel : dCode est une ressource éducative et pédagogique, accessible en ligne gratuitement et pour tous.
Le contenu de la page "Code Gray" ainsi que ses résultats peuvent être copiés et réutilisés librement, y compris à des fins commerciales, à condition de mentionner dCode.fr comme source.
L'export des résultats est gratuit et se fait simplement en cliquant sur les icônes d'export ⤓ (format .csv ou .txt) ou ⧉ copier-coller.
Pour citer dCode.fr sur un autre site Internet, utiliser le lien :
Dans un article scientifique ou un livre, la citation bibliographique recommandée est : Code Gray sur dCode.fr [site web en ligne], consulté le 13/04/2025,