C/ Le binaire

1- Théorie

Dans la vie de tous les jours, nous utilisons pour compter le système décimal. En langage technique, nous l’appelons base 10, car il comporte 10 symboles différents, de 0 jusqu’à 9. Ce système est positionnel, c’est-à-dire que la valeur d’un même symbole diffère en fonction de sa position dans le nombre.

Le 8 de 38 n’a pas la même valeur que le 8 de 86.

En fait, un nombre s’écrivant a b c est l’abréviation de 102 a + 101 b + 100 c.

935 = 9 * 102 + 3 * 101 + 5 * 100
= 900 + 30 + 5
= 935

En informatique, comme nous vous en avons expliqué la raison, nous utilisons le système binaire, appelé base 2. Il comporte 2 symboles : le 0 et le 1. Cette unité élémentaire se nomme un bit (de l’anglais binary digit). En base 10, l’unité élémentaire est un chiffre. Le système binaire est aussi positionnel.

Le 1 de 001 n’a pas la même valeur que le 1 de 100.

En fait, similairement au système décimal, un nombre s’écrivant a b c est l’équivalent de 22 a + 21 b + 20 c en décimal.

101 = 1 * 22 + 0 * 21 + 1 * 20
4 + 0 + 1
5

2- Codage

Les bits sont souvent utilisés par 8 : ce groupe est appelé un octet. Tout comme dans le système décimal, l’ajout de un ou plusieurs 0 à gauche du nombre n’affecte pas sa valeur.

Ainsi, le 10100 s’écrira sur 00010100 sur 8 bits.

Cependant, il est possible de coder sur le nombre n de bits que nous désirons. Cela dépend du nombre de possibilités voulu.

Nous voulons coder une image en noir et blanc. Par conséquent, chaque pixel sera soit noir, soit blanc ; nous voulons donc deux possibilités de nombres binaires. Le codage sur 1 bit permet cela : le pixel sera caractérisé par un 0 pour sa couleur blanche, ou par un 1 pour sa couleur noire.


Choisir un bon nombre pour le codage est essentiel. En effet, ce sont les bits qui prennent de la place, donc nous ne pouvons pas nous dire « Nous n’avons qu’à coder sur 64 bits comme cela nous sommes sûr d’avoir un nombre de possibilités suffisant » ; pour un peu que la vidéo codée soit longue, il y a de fortes chances qu’il soit impossible de la graver sur un CD ou un DVD, faute d’espace disponible. De plus, il ne faut pas choisir un nombre de bits trop faible, sinon le nombre de possibilités sera trop faible pour traduire le signal analogique.

Nous désirons coder une image en 32 000 couleurs. Chaque pixel étant traité séparément, nous voulons donc au minimum 32 000 possibilités de nombres binaires. Le codage sur 15 bits permet cela, car 15 bits correspondent à 32768 possibilités. Nous coderons au final l’image sur 16 bits.

3- Conversion base 10 / base 2

Plusieurs méthodes permettent de convertir un nombre x en base 10 en base 2 sur n bits :

1ère méthode :

1ère étape : Le nombre x en base 10 est divisé par 2, et si le reste est nul, nous notons 0, sinon 1. Le résultat de la division précédente est ensuite divisé lui-même par 2 : encore une fois, si le reste est nul, nous notons 0, sinon 1.
Et ainsi de suite jusqu’à ce que le résultat de la division soit nul.

2ème étape : Les 0 et les 1 notés se lisent chronologiquement du plus récent au plus ancien.

Exemple : convertissons 20 en binaire :

2ème méthode :

1ère étape : Déterminer le nombre n.

2ème étape : Effectuer le calcul 2(n-1).
Le résultat est soustrait à x. Si la différence est négative ou nulle, nous notons 0, sinon 1.

3ème étape : Effectuer le calcul 2(n-2).
Le résultat est soustrait au résultat de la soustraction précédente, ou à x si ce résultat est négatif. Si la différence est négative ou nulle, nous notons 0, sinon 1.

Et ainsi de suite jusqu’au calcul de 2(n-n).

4ème étape : Les 0 et les 1 notés se lisent chronologiquement du plus ancien au plus récent.

Exemple : Convertissons 45 en binaire (base 2)
Nous coderons sur n = 8 bits

2(8-1) = 27 = 128
45 – 128 = -83 résultat négatif : 0
2(8-2) = 26 = 64
45 – 64 = -19 résultat négatif : 0
2(8-3) = 25 = 32
45 – 32 = 13 résultat positif : 1
2(8-4) = 24 = 16
13 – 16 = -3 résultat négatif : 0
2(8-5) = 23 = 8
13 – 8 = 5 résultat positif : 1
2(8-6) = 22 = 4
5 – 4 = 1 résultat positif : 1
2(8-7) = 21 = 2
1 – 2 = -1 résultat négatif : 0
2(8-8) = 20 = 1
1 – 1 = 0 résultat nul : 1

Nombre en base 2 : 0010 1101

4- Convertisseur décimal / binaire

Le convertisseur décimal/binaire a été développé par Henri Rebecq dans le cadre des TPE cette année.

Il m'a demandé beaucoup de travail (tant pour l'apprentissage du langage de programmation utilisé : le Javascript, que pour l'élaboration de l'algorithme (assez simple) de conversion).

Pour l'utiliser, entrez un nombre (en base 10) à l'aide du clavier numérique dans le premier champ (à gauche), puis sélectionnez un nombre de bits sur lequel coder.

Appuyez ensuite sur le bouton "Convertir".
Vous pouvez effacer le champ en appuyant sur le bouton "Effacer".

Note : si vous convertissez un nombre décimal avec un nombre de bits insuffisant, le résultat obtenu sera faux.

Essayez, par exemple, de convertir 45 sur 5 bits. Le convertisseur affiche 11111. Cela correspond à la valeur maximale qu'on peut obtenir en codant sur 5 bits, soit 31 en base 10.

Ce site a été crée dans le cadre des TPE de l'année scolaire 2006-2007 par Timothé Crespy, François Gavrel et Henri Rebecq, élèves à l'Institution des Chartreux à Lyon. Tous droits réservés ©