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". Sauf code licence open source explicite (indiqué Creative Commons / gratuit), l'algorithme pour "Code Gray", l'applet ou snippet (convertisseur, solveur, chiffrement / déchiffrement, encodage / décodage, encryptage / décryptage, traducteur) ou les 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 les données, en téléchargement, script, ou les accès API à "Code Gray" ne sont pas publics, idem pour un usage hors ligne, PC, mobile, tablette, appli iPhone ou Android !
Rappel : dCode est gratuit.
Le copier-coller de la page "Code Gray" ou de ses résultats est autorisée (même pour un usage commercial) tant que vous créditez dCode !
L'exportation des résultats sous forme de fichier .csv ou .txt est gratuite en cliquant sur l'icone export
Citer comme source bibliographique :
Code Gray sur dCode.fr [site web en ligne], consulté le 21/11/2024,