Fondamentaux – Décimal, Binaire et Hexadécimal

LEÇON

 

Systèmes de numération - Principes

 

Un système de numération est un système d'écriture pour exprimer des nombres. Typiquement, on représente des nombres avec des suites de chiffres ou, plus génériquement, des suites de symboles.

Par exemple, dans notre système de numération indo-arabe, qui est un système décimal (basé sur la quantité dix), un nombre est exprimé avec une suite de chiffres, chaque chiffre étant un des dix symboles 0, 1, 2, 3, 4, 5, 6, 7, 8 et 9. La valeur, ou l'importance, de chaque chiffre est déterminée par sa position dans la suite.

Exemple : On écrit le nombre "deux mille quatorze" avec la suite de 4 chiffres "2014". Chacun des chiffres est un des symboles 0, 1, 2, 3, 4, 5, 6, 7, 8 ou 9. Les chiffres à gauche ont plus de valeur (contribuent plus à la quantité exprimée) que les chiffres à droite.

Ce qu'il faut savoir est que le système de numération indo-arabe n'est pas le seul système qui existe pour exprimer des nombres. Il y en a bien d'autres.

Dans la vie courante, on a trouvé pratique un système de numération basé sur le nombre dix, peut-être parce que nous avons dix doigts. Mais dans le monde de l'informatique, qui est basée sur des signaux électroniques binaires (le courant passe / le courant ne passe pas), il est plus pratique d'employer des systèmes de numération basés sur la quantité deux, ou sur certains multiples de deux (en particulier huit et seize).

 

Décimal

 

Base : 10

10 Symboles : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

 

La valeur d'un chiffre par rapport à sa position (décalage par rapport au chiffre le plus à droite) :

Position 6 5 4 3 2 1 0
Valeur 106 105 104 103 102 101 100
1 000 000 100 000 10 000 1 000 100 10 1

 

Compter à partir de zéro :

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...

 

"cinq"

= 5 x 1

= "5"

 

"vingt neuf"

= (2 x 10) + (9 x 1)

= "29"

 

"deux mille quatorze"

= 2 x 1000 + 0 x 100 + 1 x 10 + 4 x 1

= "2014"

 

Binaire

 

Base : 2

2 Symboles : 0, 1

 

La valeur d'un chiffre par rapport à sa position (décalage par rapport au chiffre le plus à droite) :

Position 10 9 8 7 6 5 4 3 2 1 0
Valeur 210 29 28 27 26 25 24 23 22 21 20
1 024 512 256 128 64 32 16 8 4 2 1

 

Compter à partir de zéro :

0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111, 10000, 10001, 10010, 10011, 10100, ...

 

"cinq"

= 1 x 4 + 0 x 2 + 1 x 1

= "101"

 

"vingt neuf"

= 1 x 16 + 1 x 8 + 1 x 4 + 0 x 2 + 1 x 1

= "11101"

 

"deux mille quatorze"

= 1 x 1024 + 1 x 512 + 1 x 256 + 1 x 128 + 1 x 64 + 0 x 32 + 1 x 16 + 1 x 8 + 1 x 4 + 1 x 2 + 0 x 1

= "11111011110"

 

Les quantités suivantes sont donc équivalentes :

Elles sont juste exprimées selon deux différents systèmes de numération : Base 10, ou décimal, indiqué par l'indice "10" en bas à la fin du nombre, et Base 2, ou binaire, indiqué par l'indice "2" en bas à la fin du nombre.

 

510 = 1012

2910 = 111012

201410 = 111110111102

 

Hexadécimal

 

Base : 16

16 Symboles : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f

 

La valeur d'un chiffre par rapport à sa position (décalage par rapport au chiffre le plus à droite) :

Position 6 5 4 3 2 1 0
Valeur 166 165 164 163 162 161 160
16 777 216 1 048 576 65 536 4 096 256 16 1

 

Compter à partir de zéro :

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, 10, 11, 12, 13, 14 ...

 

"cinq"

= 1 x 5

= "5"

 

"vingt neuf"

= 1 x 16 + 13 x 1

= "1d"

 

"deux mille quatorze"

= 7 x 256 + 13 x 16 + 14 x 1

= "7de"

 

Les quantités suivantes sont donc équivalentes :

 

510 = 1012 = 516

2910 = 111012 = 1d16

201410 = 111110111102 = 7de16

 

Notation des nombres hexadécimaux

 

De manière générale, dans l'informatique, on utilise le préfixe "0x" (le chiffre zéro puis la lettre x en minuscule) pour indiquer un nombre en hexadécimal.

Ainsi :

0x5 = "cinq"

0x1d = "vingt-neuf"

0x7de = "deux mille quatorze"

 

Par contre, en CSS, pour exprimer une couleur RVB (anglais RGB) en hexadécimal, le préfixe est le dièse (#).

Ainsi :

magenta = #ff00ff

turquoise = #40e0d0

 

Pourquoi utiliser le système hexadécimal ?

 

L'intérêt d'employer le système hexadécimal pour exprimer des quantités en informatique vient du fait qu'il y a une cohérence entre ce système et le système de numération binaire.

Pour les être humains, exprimer des quantités purement en binaire, par exemple 10000001110000011010000, n'est pas commode du tout quand il faut les lire ou les écrire.

Par ailleurs, utiliser les nombres décimaux pour exprimer des quantités qui sont fondamentalement binaires (basées sur des puissance de 2) n'est pas optimal non plus, car il n'y a pas de relation simple entre un nombre décimal et sa version binaire. Non seulement la conversion est un peu compliquée mais, et c'est peut-être le plus important, quelque chose est "perdu" dans la traduction...

Exemple :

  • la couleur CSS nommée "turquoise", exprimée en RGB/binaire, est "010000001110000011010000"
  • Pas facile à lire ou écrire donc
  • En CSS, avec la notation RGB/hexadécimal, on l'exprime ainsi : #40e0d0
  • Déjà plus facile à lire ou à écrire
  • Et à comprendre : le niveau du rouge (R) dans la couleur est 0x40, le niveau du vert (G) est 0xe0, et le niveau du bleu (B) est 0xd0
  • On voit donc tout de suite qu'il y a peu de rouge, beaucoup de vert et beaucoup de bleu.
  • Cette même valeur, exprimé en décimal est 4251856
  • sans faire de calcul, il est impossible de voir dans ce nombre les niveaux de rouge, vert et bleu
  • quelque chose est donc "perdu" dans la traduction

 

Conversion binaire - hexadécimal

 

Remarque : cette conversion est beaucoup plus importante à connaître car, dans l'informatique, on rencontre des nombres en hexadécimal nettement plus fréquemment que les nombres en octal.

Comme 16 est un multiple de 2, la conversion est simple.

16 = 24 donc un chiffre en hexadécimal (de 0 à f, ou de "zéro" à "quinze") peut être exprimé avec exactement 4 chiffres binaires (de 0 à 1111).

Pour convertir du binaire en hexadécimal, il suffit donc de séparer les chiffres binaires en blocs de 4 chiffres, puis de convertir bloc par bloc :

Nombre binaire 010000001110000011010000
Blocs de 4 chiffres 0100 0000 1110 0000 1101 0000
Conversion de chaque bloc en chiffre hexadécimal 4 0 e 0 d 0
Nombre hexadécimal 40e0d0

 

Remarque : observez qu'on a mis un zéro au début du nombre binaire pour faire exactement 4 chiffres par groupe. Si on avait commencé à faire des groupes à partir du premier chiffre 1 du nombre binaire on aurait fini avec un groupe de 3 chiffres à la fin et on n'aurait pas eu le même résultat (on aurait eu un résultat complètement faux !).

Pour faire le contraire (convertir de l'hexadécimal en binaire), on fait exactement la même chose mais à l'envers. C'est à dire qu'on convertit chaque chiffre hexadécimal en un bloc de 4 chiffres (lire le tableau ci-dessus à l'envers pour comprendre).

 


 

QUESTIONS

  1. Pourquoi le système binaire est-il important dans l'informatique ?
  2. Pourquoi le système hexadécimal est utile pour les web designers ?

 

EXERCICES

 

  1. Le nombre décimal 13710 représente la quantité "cent trente-sept". Si on regarde la contribution de chaque chiffre dans 13710 , le chiffre en bleu contribue une valeur de 3x10 donc 30. Le nombre binaire 11112 représente la quantité "quinze". Si on regarde la contribution de chaque chiffre dans 11112 , le chiffre en bleu contribue une valeur de 1x4 donc 4. Dans chaque cas suivant, trouver la contribution (exprimée en décimal) du chiffre en bleu :
    • 11012
    • 1c216
    • 10011001112
    • 15fa29b316
  2. Remplir la table suivante. Pour chaque ligne il faut convertir la valeur donnée vers les autres systèmes de numération.

 

Binaire Décimal Hexadécimal
110
19
a3
10110101
299
1fa
101101010110001111110010
7990114
e9abf7