Outil pour convertir des nombres selon le code Elias Gamma, noté γ, codage généralement utilisé en compression de données pour stocker des données de taille arbitraire.
Codage Elias Gamma - dCode
Catégorie(s) : Compression, Système de Notation
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 gamma d'Elias est un code avec préfixe universel. Le préfixe indique la longueur de la chaine binaire qui le suit. Il est donc possible d'encoder n'importe quel nombre entier binaire.
Pour coder un nombre décimal $ N $, prendre sa représentation binaire $ N_{(2)} $ et calculer $ L = \lfloor \log_2 N \rfloor $ ce qui est équivalent à son nombre de bit moins 1.
Exemple : Pour encoder $ N = 5 $ qui a pour représentation binaire $ N_{(2)} = 101 $ (3 bits), calculer la partie entière de $ \log_2 5 \approx 2.32 $ soit $ L=2 $ (soit 1 de moins que le nombre de bits).
Coder en unaire $ L $ et concaténer la représentation binaire privée du bit de poids fort (le premier 1) pour obtenir le code Elias Gamma $ \gamma $ correspondant à $ N $
Exemple : $ L = 2 $ se code en unaire $ 001 $ (ou parfois $ 110 $) et le binaire sans le premier $ 1 $ vaut $ 01 $ donc le codage Elias $ \gamma = 00101 $
Exemple : Les premiers nombres entiers encodés avec Gamma sont :
1 | 1 | 2 | 010 |
---|---|---|---|
3 | 011 | 4 | 00100 |
5 | 00101 | 6 | 00110 |
7 | 00111 | 8 | 0001000 |
9 | 0001001 | 10 | 0001010 |
11 | 0001011 | 12 | 0001100 |
13 | 0001101 | 14 | 0001110 |
15 | 0001111 | 16 | 000010000 |
17 | 000010001 | 18 | 000010010 |
19 | 000010011 | 20 | 000010100 |
Lire la valeur binaire de manière à la découper en 2 sous-valeurs de même longueur séparées par un bit : la première est la valeur unaire correspondant au nombre de bits moins 1, la seconde est la représentation binaire privée du bit de poids fort.
Pour retrouver la valeur initiale, mettre un 1 devant la seconde valeur et convertir le nombre binaire obtenu en base 10.
Exemple : 00101 se découpe 00/1/01, la valeur binaire est $ 101 $ ce qui correspond au nombre $ 5 $.
Les nombres binaires sont toujours de longueur impaire.
Les valeurs codées commencent toujours pas une longue suite de 0 (ou de 1)
L'encodage Elias Gamma est généralement lié à des algorithmes de compression de données.
Le code unaire peut être codé avec des 0 suivi d'un séparateur 1 ou bien avec des 1 suivi du séparateur 0.
Exemple : 5 peut être codé 000001 ou 111110.
Peter Elias l'a décrit dans un article intitulé Universal codeword sets and representations of the integers en 1975.
dCode se réserve la propriété du code source pour "Codage Elias Gamma". Sauf code licence open source explicite (indiqué Creative Commons / gratuit), l'algorithme pour "Codage Elias Gamma", l'applet ou snippet (convertisseur, solveur, chiffrement / déchiffrement, encodage / décodage, encryptage / décryptage, traducteur) ou les fonctions liées à "Codage Elias Gamma" (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 à "Codage Elias Gamma" 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 "Codage Elias Gamma" 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 :
Codage Elias Gamma sur dCode.fr [site web en ligne], consulté le 21/12/2024,