Le binaire

 

Amis lecteurs, nos ordinateurs tirent tout leur intérêt de leur puissance de calcul. Comme je vais vous l'expliquer, ceux-ci ne calculent pas dans le système décimal comme nous le faisons, mais en binaire.

Le binaire est un système de comptage ne comprenant que deux chiffres (d'où le nom), à savoir 0 (en électronique, potentiel de la masse) et 1 (potentiel le plus positif).

 

Système décimal contre binaire

Quand on compte dans le système décimal, le premier chiffre est un 0. On ajoute une unité pour atteindre 1. Les chiffres venant ensuite sont le 2, 3, 4, 5, 6, 7, 8, 9. Arrivé à 9, il n'existe plus de chiffre pour le nombre supérieur. On revient donc à 0, en ajoutant un 1 aux dizaines. Je ne vous apprend rien, mais cela va vous aider à comprendre la façon dont on compte en binaire.

 

En binaire, le premier chiffre est le 0. On ajoute 1. Cela donne 1. On ajoute à nouveau 1; cette fois-ci il n'y a pas d'autre chiffre après. Alors, on fait comme en décimal; c'est à dire qu'on met 0 aux unités et qu'on incrémente les "dizaines". Cela donne donc 10 (pas dix mais "un, zéro"). Voilà, vous savez quasiment tout sur le binaire. Voici tout de même un petit tableau pour vous éclaircir les idées:

 

 

Un chiffre binaire permet de coder deux valeurs différentes: un 0 ou un 1. Deux chiffres binaires, 4 valeurs: 00, 01, 10 ou 11. Trois chiffres binaires, 8 valeurs: 000, 001, 010, 011, 100, 101, 110 ou 111. Quelle conclusion en tirer? Seulement que le nombre de valeurs différentes qu'autorise un groupe de n chiffres binaires est de 2n. C'est important, tachez de vous en rappeler.

 

Bits, octets, mots, etc.

Je ne vous l'ai pas encore précisé mais ce que j'appelais jusqu'à présent des chiffres binaires sont plus souvent appelés "bits" en informatique. Le terme "bit" est la contraction de l'anglais BInary digiT qui, signifie, c'est incroyable, chiffre binaire. Quelle coïncidence quand même.

En groupant les bits on peut stocker des valeurs différentes de 0 ou 1:

• un groupe de 4 bits est appelé "quartet". Il permet de stocker 24 valeurs différentes, soit 16 valeurs .

• un groupe de 8 bits est appelé "octet". Il permet de stocker 28 valeurs différentes, c'est à dire 256 valeurs.

• 16 bits forment un "mot". Il permet de stocker 216 valeurs, soit 65 536 valeurs.

• 32 bits forment un "mot double". On peut stocker 232 valeurs, c'est à dire… euh… beaucoup! (plus de 4 milliards)

 

Il existe bien des groupes de 64 bits voire plus, mais il n'existe plus de noms, ou alors ceux-ci ne sont guère utilisés.

 

L'unité de mesure de la mémoire est l'octet. Un groupe de 1024 octets est appelé kilo-octet, bien que le kilo corresponde en physique à 1000. L'abréviation de kilo-octet est ko, avec un petit k et un petit o. Pas autrement. Si je vois des KO, kO et autres ignominies, je fouette. À mort les hérétiques!

On trouve d'autres multiples, à savoir le Méga-octet (Mo qui fait 1024 ko) et le Giga-octet (Go qui fait 1024 Mo). Au rythme où vont les choses, le Giga-octet ne sera plus suffisant pour décrire la capacité mémoire de nos disques durs. Il existe d'autres multiples comme le Tera-octet (To, égal à 1024 Go), ou encore d'autres…

 

Bien. En anglais, allez savoir pourquoi, dans cette langue barbare, disais-je, un octet est appelé "byte" (ce qui se dit "baïte"). Un kilo-octet se dit donc "kilobyte". Et l'abréviation devient kB (avec un petit k et un grand B). Il existe une autre unité de mesure, bâtarde, le kilo-bit, qui vaut donc 8 fois moins qu'un kilo-octet. L'abbréviation de kilo-bit est "kb" (avec un petit k et un petit b). Pas de problème tant que des crétins ne s'amusent pas à écrire KB pour un kilo-bit, kb pour un kilobyte, etc. Bref, chaque fois que vous verrez des Kb et autre conneries de cet acabit, méfiez-vous. Bon, je m'en vais de ce pas fouetter ces crétins, vous laissant en compagnie du professeur Apfelsaft:

 

"D'abrès-moi, le derme kilo-bit qui a peu d'udilidé fut invendé par des commerziaux pour vaire croire que leur protuits manibulaient 8 fois plus de tonnées. De la même manière, les fendeurs de conzoles avaient l'habidude de barler de "Méga". Il s'agizsait de méga-bits et non de méga-ocdets. Bref, ils profidaient de doute ambiguïté."

 

Professeur, merci.

 

Binaire codé décimal (BCD)

Le moment me parait opportun pour vous parler de quelque chose que vous ne reverrez peut-être pas de si tôt. Il s'agit du binaire codé décimal. Voilà d'abord deux exemples:

 

27 donne en BCD: 0010 0111

car 0010 binaire = 2 décimal et 0111 binaire = 7 décimal

156 donne en BCD: 0001 0101 0110

 

Vous avez compris? Non? Alors j'explique. En fait, nous avons vu auparavant qu'avec 4 bits on peut stocker 24 valeurs différentes, soit 16. Ces 4 bits nous servent ici à retenir la valeur d'un nombre décimal. Pour vous en convaincre jetez un œil au tableau précédent. Il n'y a rien à comprendre sauf que chaque chiffre décimal prend un quartet.

 

Hexadécimal

L'hexadécimal est une autre façon de compter, tout comme le binaire.

En décimal, il y a 10 chiffres. Nous avons adopté la "base 10" , parce que nous avons 10 doigts, tout simplement. Il était ainsi facile de compter sur nos doigts. Cela est tellement vrai que certaines tribus d'Afrique comptent en base 20. À la différence de nous, elles comptent sur tous leurs doigts.

Le binaire a été adopté par l'informatique en raison des deux états "0 ou 1". Cependant, il a un grand défaut. Un exemple: Quel est l'équivalent binaire de 7236 décimal?

Le professeur me dit qu'il a calculé 1110101000100 de tête. J'ai vérifié avec ma super -calculatrice Hewlett Packard qui me dit que ça fait 1110001000100. Après vérification, le professeur s'est juste trompé en me dictant. C'est que 13 chiffres, ça fait long. Et les erreurs sont fréquentes. Pour résoudre ce problème, on a eu recours à l'hexadécimal, c'est à dire la base 16. Voilà pourquoi:

 
Décimal
Binaire
Hexadécimal
7236
1 1100 0100 0100
1C44

 

Comme vous pouvez le remarquer, l'hexa utilise des chiffres bizarres, qu'on appelle "lettres" en français! Ben, oui, en décimal, il n'y a que 10 chiffres; en hexa 16. Comme il en manquait 6, on a tout simplement pris les premières lettres de l'alphabet. Ainsi 10d (10 en décimal) donne Ah (A en hexa), 11d donne Bh, 12d donne Ch, etc..

Ca ne vous explique pas tout. Jouons à un super jeu: Prenons les quartets et donnons leur équivalent en décimal, puis en hexa:

 

Binaire:

0001

1100

0100

0100

Décimal:

1

12

4

4

Hexa:

1

C

4

4

...soit ce que l'on a trouvé en haut!

 

Ben, oui, c'est génial, un quartet peut être transformé directement en hexa. C'est quand même plus concis comme cela.

 

Des nombres négatifs

Je n'en ai pas encore parlé. Oui, il existe un moyen de créer des nombres négatifs. D'ailleurs, un microprocesseur ne sait pas soustraire des nombres, juste additionner des nombres, certains étant négatifs. Je ne vais pas m'étendre dessus, il vous faut surtout savoir que le bit de poids fort (celui qui est le plus à gauche dans un groupe de bits) est positionné à 1 lorsque le nombre est négatif. Prendre en compte le signe occupe donc un bit ce qui limite les valeurs positives. Un exemple, pour un octet, il y a 256 valeurs possibles. Si le nombre n'est pas signé, les valeurs s'étendent de 0 à 255. Si par contre il est signé, elles s'étendent cette fois-ci de -128 à +127.

 

Conversion entre les différentes bases

Voilà la partie la plus matheuse de cet article. Non, ne passez pas à la page suivante! Je suis plutôt moyen en maths, et pourtant j'y arrive. Le professeur Apfelsaft ne m'a pourtant jamais aidé. Alors, essayez, s'il vous plaît…

 

Il faut avant tout comprendre quelque chose que vous avez sûrement déjà vu en classe.

Prenons le nombre 8453 (décimal).

 

8453 = 8 x 1000 + 4 x 100 + 5 x 10 + 3 x 1

= 8 x 103 + 4 x 102 + 5 x 101 + 3 x 100

Sachant que n0 est toujours égal à 1.

 

De même pour le nombre binaire 1001001:

1001001 = 1 x 26 + 0 x 25 + 0 x 24 + 1 x 23 + 0 x 22 + 0 x 21 + 1 x 20

 

Binaire vers décimal

Il est ainsi facile de convertir ce nombre vers le décimal. Il suffit d'ajouter les puissances de 2:

1001001b = 26 + 23 + 20 = 64 + 8 +1 = 73d

 

Voici un petit tableau qui vous sera utile:

 

Décimal vers binaire

La technique est à peu près la même. Pour convertir le nombre 27d par exemple:

27d = 16 + 8 + 2 + 1 = 24 + 23 + 21 + 20 = 11011

 

On fait pareil, mais dans l'autre sens; on prend les puissances de 2 et on les additionne pour arriver au total en décimal.

 

Autres conversions

Pour ce qui est du binaire vers hexa ou le contraire, j'ai déjà expliqué. La technique pour la conversion du décimal vers ou depuis l'hexa peut être faite de la même manière que pour le binaire, même s'il existe des méthode plus rapides.

 

Si vous n'y arrivez pas, il y a une autre solution: La calculatrice scientifique. Il est vrai qu'il est toujours tentant de céder à la facilité. Surtout quand les nombres deviennent grands.

 

En conclusion

Ben, oui je vous ai appris pas mal de choses. La plupart vous sembleront assez inutiles. Ce n'est pourtant pas toujours le cas. Retenez bien l'exemple du binaire signé; si un nombre que vous vouliez positif se retrouve négatif, c'est sûrement parce que vous n'avez pas prévu assez de bits!

À propos, sous MacOS,

un char fait 8 bits (signés, de -128 à +127)

un short fait 16 bits (signés, de -32 768 à +32767)

un long fait 32 bits (signés, de -2 147 483 648 à +2 147 483 647 !)

 

Cet article vous sera utile pour la lecture du suivant, dont le sujet est l'algèbre booléenne.

Sur ce, le professeur et moi vous laissons.

 

 

Renaud "Jump" Pradenc