Première NSIReprésentation des données

Entiers Positifs en Binaire et Hexadécimal

Comprendre les systèmes de numération et les conversions entre bases

Entiers positifs en binaire et hexadécimal

Une machine ne distingue que deux états : le courant passe, ou il ne passe pas. On code donc les entiers avec deux symboles, 0 et 1. Le binaire est cette écriture. L'hexadécimal, seize symboles, sert surtout à la raccourcir : un chiffre hexadécimal remplace exactement quatre bits. Avant de convertir, il faut voir ce qu'est une base.

Une base, des colonnes

Dans une base bb, on dispose de bb symboles, et chaque colonne vaut une puissance de bb. En décimal, base 10, les symboles vont de 0 à 9.

154(10)=1×102+5×101+4×100154_{(10)} = 1\times10^{2} + 5\times10^{1} + 4\times10^{0}

Le 1 pèse cent, le 5 pèse dix, le 4 pèse un. En binaire, base 2, les symboles sont 0 et 1, et les colonnes valent 1,2,4,8,16,…1, 2, 4, 8, 16, \ldots

1101(2)=1×23+1×22+0×21+1×20=13(10)1101_{(2)} = 1\times2^{3} + 1\times2^{2} + 0\times2^{1} + 1\times2^{0} = 13_{(10)}

Un chiffre binaire s'appelle un bit. Huit bits forment un octet. On écrit la base en indice dès qu'elle n'est pas évidente : 1101(2)1101_{(2)} n'est pas mille cent un.

Du binaire vers le décimal

On additionne les puissances de 2 là où le bit vaut 1. Les zéros ne pèsent rien.

232^3222^2212^1202^0
1101

1101(2)=8+4+0+1=13(10)1101_{(2)} = 8 + 4 + 0 + 1 = 13_{(10)}

La colonne de droite est toujours 20=12^0 = 1. On lit les poids de droite à gauche en les doublant.

Du décimal vers le binaire

Deux méthodes arrivent au même endroit. La première, les divisions successives par 2, est la plus mécanique. On note le reste à chaque étape, et on lit les restes du dernier vers le premier.

Exemple : 29(10)29_{(10)}

29 ÷ 2 = 14  reste 1
14 ÷ 2 =  7  reste 0
 7 ÷ 2 =  3  reste 1
 3 ÷ 2 =  1  reste 1
 1 ÷ 2 =  0  reste 1

Le dernier reste est le bit de poids fort. Résultat : 29(10)=11101(2)29_{(10)} = 11101_{(2)}. On vérifie en revenant au décimal : 16+8+4+0+1=2916 + 8 + 4 + 0 + 1 = 29. Lire les restes dans l'ordre où on les a calculés, de haut en bas, donne le miroir du nombre. C'est l'erreur la plus fréquente du chapitre.

L'autre méthode pose les puissances de 2. On cherche le plus grand 2k2^k inférieur ou égal au nombre, on met un 1 dans cette colonne, on soustrait, et on recommence. Pour 42(10)42_{(10)} : 25=322^5 = 32 tient, 24=162^4 = 16 ne tient pas dans le reste 10, 23=82^3 = 8 tient, 22=42^2 = 4 ne tient pas dans le reste 2, 21=22^1 = 2 tient, 20=12^0 = 1 ne tient plus.

42(10)=101010(2)42_{(10)} = 101010_{(2)}

Vérification : 32+8+2=4232 + 8 + 2 = 42.

L'hexadécimal, quatre bits d'un coup

La base 16 utilise les symboles {0,…,9,A,B,C,D,E,F}\{0,\ldots,9,A,B,C,D,E,F\}. A vaut 10, F vaut 15. Comme 16=2416 = 2^4, chaque chiffre hexadécimal correspond à un paquet de quatre bits.

Déc.HexBinaire (4 bits)
000000
10A1010
15F1111

On regroupe donc le binaire par paquets de quatre, en partant de la droite, et on traduit chaque paquet.

1111 1111(2)=FF(16)=255(10)1111\,1111_{(2)} = \mathrm{FF}_{(16)} = 255_{(10)}

Dans l'autre sens, du décimal vers l'hexadécimal, ce sont des divisions successives par 16, et on lit encore les restes de bas en haut. 255÷16=15255 \div 16 = 15 reste 1515, qu'on écrit F. Puis 15÷16=015 \div 16 = 0 reste 1515, encore F. D'où FF(16)\mathrm{FF}_{(16)}.

En résumé, une base bb a bb symboles, et la valeur d'une écriture est la somme des chiffres multipliés par les puissances de bb. En binaire, les colonnes doublent. Du décimal vers le binaire, on divise par 2 et on lit les restes du dernier au premier. Un chiffre hexadécimal vaut quatre bits, et F vaut 1111(2)1111_{(2)}. Un octet, ce sont huit bits. On indique la base dès qu'un lecteur pourrait se tromper.

Pour s'entraîner

Exercices : données binaires