2. Les entiers¶
La plupart des civilisations humaines utilise le système décimal. Pourquoi ? Tout simplement parce que nous avons 10 doigts !
L’ordinateur, lui, n’a pas de doigts mais utilise l’électricité. Par conséquent, il ne connaît que deux types d’informations : il y a du courant, il n’y a pas de courant ; allumé, éteint ; vrai, faux ; 1 ou 0.
On dit qu’il travaille dans un système binaire, ou en base deux.
2.1. Les systèmes de numération¶
Le système décimal¶
Ce système est composé de 10 symboles qui sont les chiffres :
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Ainsi, tout nombre écrit dans la base 10 est composé de ces chiffres.
La valeur de chaque chiffre dépend alors du chiffre lui-même et de sa
place. Ainsi, le 3 de 1934 et celui de 3008 n’ont pas la même valeur :
Le premier vaut 30, alors que le second vaut 3000.
On parle alors de représentation positionnelle en base 10.
Dans ce système, pour connaître la valeur de chaque chiffre qui compose un nombre, il faut décomposer ce nombre pour identifier chaque chiffre et son coefficient, c’est la forme canonique.
Décomposition du nombre 3528 :
8 unités
2 dizaines
5 centaines
3 milliers
On peut alors vérifier que le nombre 3528 est bien dans la base 10, car tous ces chiffres appartiennent à la base 10. Les nombres de la base 10 ou du système décimal sont des nombres décimaux.
Le système binaire¶
Le système binaire, ou numération positionnelle en base 2, est
représenté à l’aide d’uniquement 2 symboles : 0 et 1.
Cette représentation et la représentation décimale sont deux
représentations, parmi d’autres, d’un même concept.
Un élément binaire se nomme un bit et un ensemble de bits peut représenter un entier en utilisant le même principe que pour le système décimal.
La valeur de chaque chiffre dépend toujours de sa place qui représente, cette fois, une puissance de 2.
La forme canonique du nombre binaire \(1101_{(2)}\) est : \(1 \cdot 2^3 + 1 \cdot 2^2 + 0 \cdot 2^1 + 1 \cdot 2^0\)
Le saviez-vous ?
Le bit vient de la terminologie anglo-saxonne de binary digit. Un ensemble de 8 bits et appelé un octet. Un kilo-octet (ko) correspond à \(10^3\) octets soit \(1000\) octets, donc \(8000\) bits. Attention à ne pas confondre les préfixes binaires (\(2^{10}\), \(2^{20}\), \(2^{30}\), etc.) et les préfixes décimaux (\(10^3\), \(10^6\), \(10^9\), etc.). On appelle kibioctet, pour kilo binaire, une quantité de \(2^{10} = 1024\) octets. On peut remarquer que cette notation, quoique rigoureuse, peine à s’imposer dans le vocabulaire courant des ingénieurs eux-même…
Compter en binaire¶
On compte en binaire de la même manière que l’on compte en base 10 en ajoutant 1 aux unités (position la plus à droite). Lorsqu’on arrive au dernier chiffre (i.e. 9 en base 10 et 1 en base 2), on le remet à 0 et on augmente de 1 le chiffre à sa gauche.
On répète ces opérations pour tous les chiffres, quelle que soit leur position. Ainsi, en base 10 :
En binaire, on obtient : \(0;-;1;-;10;-;11;-;100;-;101;-;110;-;111;-;1000;-;...\)
Micro-activité
Comptez jusqu’à 40 en binaire. Que pouvez vous observer au sujet de la parité des nombres binaires ? Pourquoi ?
Conversion du système binaire vers le système décimal¶
La conversion d’un nombre binaire en nombre en base 10 se fait aisément grâce à la forme canonique.
En effet, il suffit de calculer le résultat de la somme pondérée par les puissances de 2.
Conversion du nombre 10101
Le tableau ci-dessous permet de convertir un octet en nombre décimal.
Coefficient |
\(2^7\) |
\(2^6\) |
\(2^5\) |
\(2^4\) |
\(2^3\) |
\(2^2\) |
\(2^1\) |
\(2^0\) |
---|---|---|---|---|---|---|---|---|
Valeur |
128 |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
Bit |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
L’exemple utilisé ici est l’octet \((00101010_{(2)})\) dont la valeur décimale est : \( 00101010\_{(2)} = 0 \cdot 2^7 + 0 \cdot 2^6 + 1 \cdot 2^5 + 0 \cdot 2^4 + 1 \cdot 2^3 + 0 \cdot 2^2 + 1 \cdot 2^1 + 0 \cdot 2^0 = 42\_{(10)}\)
Important
L’utilisation d’un tableau de conversion nécessite d’écrire le nombre binaire de droite à gauche car le bit de poids faible (\(=2^0\)) se trouve à droite, de la même façon que le chiffre de poids faible (=l’unité) se trouve à droite en représentation décimale.
Micro-activité
Donnez la conversion en base 10 des nombres binaires suivants :
10101101
01110010
1111
1111111
1
10
100
1000
10000
100000
1000000
10000000
Conversion du système décimal vers le système binaire¶
L’opération de conversion du système décimal vers le système binaire est moins directe. Cependant, à l’aide d’un tableau de conversion et des instructions suivantes, il est possible d’obtenir la représentation binaire de n’importe quel entier positif.
Tableau de conversion
Instructions de conversion d’un entier du système décimal vers le système binaire
Déterminer le coefficient maximum dont la valeur est plus petite que l’entier à convertir.
Le bit associé à ce coefficient est 1.
Soustraire la valeur de ce coefficient à l’entier à convertir pour obtenir le nouveau nombre à convertir.
Recommencer à l’étape 1 tant que le nombre est différent de 0.
En commençant par le plus grand coefficient utilisé, le nombre binaire correspondant est composé de la suite des bits où des 0 représentent les coefficients non utilisés.
Par exemple, la conversion du nombre 666 en base 10 vers le binaire s’obtient avec les étapes suivantes :
Résultat : \((666_{(10)} = 1010011010_{(2)})\)
Micro-activité
Donnez la conversion binaire des nombres décimaux suivants :
97
123
256
1000
511
Pour aller plus loin
Pouvez-vous penser à une autre façon de convertir un entier du système décimal en binaire ?
Le saviez-vous ?
Le 4 juin 1996, le premier vol de la fusée Ariane 5 a explosé 40 secondes après l’allumage. La fusée et son chargement avaient coûté 500 millions de dollars. La commission d’enquête a rendu son rapport au bout de deux semaines. Il s’agissait d’une erreur de programmation dans le système inertiel de référence. À un moment donné, un nombre codé en virgule flottante sur 64 bits (qui représentait la vitesse horizontale de la fusée par rapport à la plate-forme de tir) était converti en un entier sur 16 bits. Malheureusement, le nombre en question était plus grand que 32767 (le plus grand entier que l’on peut coder en tant qu’entier signé sur 16 bits) et la conversion a été incorrecte, induisant un changement de trajectoire fatal.