Conversions de systèmes de nombres
Lorsque nous écrivons des programmes pour les microcontrôleurs, nous sommes généralement coincés à traiter avec 3 systèmes de nombres différents : décimal, binaire et hexadécimal (ou hex). Nous utilisons le décimal parce qu’il vient naturellement ; c’est la façon dont nous comptons. Malheureusement, ce n’est pas ainsi que les ordinateurs comptent. Comme les ordinateurs et les microcontrôleurs sont limités aux 1 et aux 0, ils comptent en utilisant des séquences de ces nombres. C’est le système de nombres binaires. Les nombres binaires sont généralement préfixés par les caractères « 0b » qui ne font pas partie du nombre. Parfois, ils sont également subdivisés en groupes de 4 chiffres afin de faciliter leur lecture et d’établir un lien avec le système numérique hexadécimal. Un exemple de nombre binaire est 0b0100.1011. Les points dans le nombre ne représentent rien, ils facilitent simplement la lecture du nombre.
Le système binaire est simple à comprendre, mais il faut beaucoup de chiffres pour utiliser le système binaire pour représenter de grands nombres. Le système hexadécimal peut représenter des nombres beaucoup plus grands en utilisant moins de caractères, et il ressemble beaucoup aux nombres binaires. Les nombres hexadécimaux sont généralement précédés des caractères « 0x », qui ne font pas partie du nombre. Un seul chiffre hexadécimal peut représenter quatre chiffres binaires!
Les nombres binaires ne peuvent être constitués que de 1 et de 0 ; en général, un nombre binaire est constitué de 8 chiffres (ou d’un multiple de 8) s’il est utilisé dans un ordinateur (ou un microcontrôleur). Il est utile de savoir comment convertir un nombre binaire en nombre décimal et vice versa. Comment convertir un système numérique en un autre ? Considérons d’abord comment nous déterminons la valeur d’un nombre décimal. Le nombre 268 peut être décomposé en 200 + 60 + 8, ou 2 * (10^2) + 6 * (10^1) + 8 * (10^0). Il y a deux chiffres importants que nous devons connaître pour « déconstruire » le nombre – la base du système numérique et l’emplacement du chiffre dans le nombre. La base d’un nombre décimal est 10. Lorsque nous convertissons le nombre 268, 2 est le deuxième chiffre, 6 est le premier chiffre et 8 est le chiffre zéro. Chaque chiffre doit être mis à l’échelle en fonction de sa place dans le nombre. L’échelle du chiffre est la base du système numérique élevée à la puissance de la position du chiffre dans le nombre. Ainsi, chaque chiffre est mis à l’échelle, puis tous les chiffres mis à l’échelle sont additionnés pour trouver la valeur totale du nombre.
La même méthode peut être utilisée pour trouver la valeur d’un nombre binaire. Par exemple, regardons le nombre 0b1011.0101. La base du système binaire est 2 (le préfixe 0b est souvent utilisé en code pour indiquer que le nombre est au format binaire). La valeur de notre nombre est : 1*(2^7)+0*(2^6)+1*(2^5)+1*(2^4)+0*(2^3)+1*(2^2)+0*(2^1)+1*(2^0), ce qui est égal à 181.
0b1011.0101. Quelle façon complètement inefficace de taper un nombre ! Mais nous pouvons représenter le même nombre binaire en utilisant seulement 2 chiffres hexadécimaux. Mais tout d’abord, nous allons commencer par convertir un nombre hexadécimal (hex) en décimal comme nous l’avons fait pour un nombre binaire. Que diriez-vous de 0xB5 ? Attendez, quoi ? Le préfixe 0x est utilisé dans le code pour indiquer que le nombre est écrit en hexadécimal. Mais que fait le ‘B’ là-dedans ? Le format hexadécimal a une base de 16, ce qui signifie que chaque chiffre peut représenter jusqu’à 16 valeurs différentes. Malheureusement, il n’y a plus de chiffres après le « 9 », alors on commence à utiliser des lettres. La lettre « A » représente 10, « B » 11, « C » 12, « D » 13, « E » 14 et « F » 15. F est le chiffre le plus grand dans le système de numérotation hexagonal. Nous convertissons le nombre de la même manière que précédemment. La valeur de 0xB5, alors, est : B*(16^1)+5*(16^0) ou 181.
Savoir comment convertir le binaire et l’hexa en décimal est important, mais la conversion de nombres la plus utile est probablement la conversion entre l’hexa et le binaire. Ces deux systèmes de numération fonctionnent en fait assez bien ensemble. Les systèmes de numération sont liés de telle sorte qu’un chiffre hexadécimal représente exactement 4 chiffres binaires, et que 2 chiffres hexadécimaux peuvent représenter 8 bits (ou chiffres binaires). Voici un tableau qui montre comment chaque chiffre hexadécimal est lié au système binaire :
Valeur binaire | Valeur hexadécimale |
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 |
Par exemple, pour convertir le nombre hexadécimal 0x1C en binaire, il faudrait trouver la valeur binaire correspondante pour 1 et C et les combiner. Ainsi, 0x1C en binaire est 0b0001.1100. Pour trouver la valeur hexadécimale d’un nombre binaire, il suffit d’aller dans l’autre sens. Pour trouver la représentation hexadécimale du nombre binaire 0b0010.1011, nous trouvons d’abord la valeur hexadécimale de 0010, puis la valeur hexadécimale de 1011 et nous les combinons ; la valeur hexadécimale serait 0x2B.
Il existe de nombreux outils gratuits pour aider à convertir entre ces systèmes de numération, il suffit de googler » conversion des nombres hexadécimaux « . Si vous utilisez Windows comme système d’exploitation, vous disposez d’un excellent outil intégré à la calculatrice. Il suffit de passer la calculatrice en mode scientifique et vous pouvez convertir entre les systèmes de numération en tapant un nombre puis en changeant le format de la calculatrice !
.