Lorsque nous avons fait le chenillard avec l’ATtiny84, j’ai fait des conversions binaires hexadécimales pour configurer les registres. Je ne me suis pas trop attardé dessus, je vous ai fait un article pour pouvoir revenir plus en détail sur ces conversions de chiffre et surtout vous donner des méthodes pour les faire facilement.
L’Hexadécimal et le binaire.
Sur le dernier article je vous ai fait les conversions binaires hexadécimales, je vais ici m’y attarder un peu plus afin que ce soit clair pour vous si vous avez besoin de configurer un Port. Les nombres Hexadécimaux sont des nombres en base 16. Cela signifie qu’a la place de compter de 0 a 10 vous allez compter de 0 à 16. Comme la série de nombre dans les décimaux s’arrête a 9 on a mit des lettres pour combler les nombres qui manquent A, B, C, D ,E et F.
Ca donne la suite suivante en base 16:
0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F
Pour comparer en base 10, ce sont les nombres que vous utilisez tout les jours :
0–1-2-3-4-5-6-7-8-9
Le binaire lui est une base 2 et ca donne donc :
0-1
La base 16 est ce que l’on appelle l’hexadécimal, la base 2 le binaire et enfin la base 10 les décimaux.
Pourquoi l’hexadécimal ?
Comme vous le savez surement les ordinateurs et la logique qui le compose ne savent traiter que des « 0 » et des « 1 » des niveaux haut et des niveaux bas. Le binaire est donc tout indiqué pour représenter ces niveaux haut et bas. Cependant le binaire n’est pas très lisible et est en plus très volumineux a écrire. C’est la qu’intervient l’Hexadécimal, cette base a l’avantage de pouvoir écrire 4 bits en 1 seul. Il permet de compresser les écritures de données, c’est pourquoi lorsque vous éditez une mémoire ne contenant que des « 0 » et des « 1 » avec un logiciel la sortie se fait systématiquement en hexadécimal.
Comment faire la conversion binaire hexadécimale ?
Comme je vous l’ai dit un seul caractère en hexadécimal correspond a 4 bits. Les bits en binaire se lisent de droite a gauche on commence par ce qu’on appelle le LSB ( le bit de poids faible) qui est donc a droite puis on se décale a gauche pour aller lire jusqu’au MSB ( le bit de poids fort ). La technique de base consiste a vous donner un tableau de correspondance qui ressemble a ça:
- 0000 -> 0
- 0001 -> 1
- 0010 -> 2
- 0011 -> 3
- 0100 -> 4
- 0101 -> 5
- 0110 -> 6
- 0111 -> 7
- 1000 -> 8
- 1001 -> 9
- 1010 -> A
- 1011 -> B
- 1100 -> C
- 1101 -> D
- 1110 -> E
- 1111 -> F
Ce tableau de correspondance va nous servir a convertir tout les chiffres binaires en hexadécimal, je vous montre:
voici un nombre binaire :110011110010101011100
Nous commençons par le séparer en groupe de 4 en partant de la droite ca donne donc ca: 1 1001 1110 0101 0101 1100
Comme vous le voyez il reste un 1 qui se retrouve seul et bien pour n’avoir que des paquets de 4 bits il suffit de rajouter quelques 0 comme ça: 0001 1001 1110 0101 0101 1100
Maintenant nous allons les convertir en hexadécimal avec le tableau : 19E55C
Comme vous le voyez rien de bien difficile.
La conversion en décimal.
Il peut être utile de savoir a quelle quantité vous avez a faire lorsque vous voyez un nombre en Binaire. Pour se faire vous aurez a le convertir en décimal, je vous montre une méthode simple pour le faire.
Comme vous le savez maintenant chaque bit a un poids dans un nombre en binaire. Il faut savoir que ce poids double a chaque décalage vers le MSB, ca donne donc les valeurs suivantes:
Ci-contre voici notre nombre binaire avec les poids de chaque bit en dessous. Il s’agit d’un nombre encodé sous 24 bits (ou 21 vu qu’on pourrait se passer des 3 premiers « 0 ». Pour connaitre le nombre maximal que vous pourrez écrire avec un chiffre encodé en 24 bits, il faut taper sur une calculatrice 2 exp (nb de bits) ici 2^24 donne 16 777 216 c’est d’ailleurs justement le même encodage que les pixels d’un écran ce qui donne le nombre de couleur disponible de chaque pixel a l’écran.
Revenons a notre conversion
Pour convertir un nombre comme celui la maintenant que vous connaissez les poids il ne vous reste plus qu’a additionner les nombres qui sont au niveau 1.
Ca donne donc :
1048576+524288+65536+32768+16384+8192+1024+256+64+16+8+4 = 1 697 116
c’est la valeur décimale de notre nombre en binaire.
J’espère que ces connaissances sur les conversions binaires hexadécimales décimales vous seront utiles , merci pour votre lecture !
Sylvain Altmayer