L’histoire des numérations est longue et riche. On peut noter :
Rappelons qu’ici on ne parle que des entiers. Les ensembles de nombres qui contiennent les entiers : $$\mathbb N \subset \mathbb Z\ \subset \mathbb D \subset \mathbb Q \subset \mathbb R \subset \mathbb C \subset \mathbb H \subset \mathbb O \subset \mathbb S$$ ont aussi une histoire très riche. Cette histoire, plus récente, continue cependant de s’écrire encore aujourd’hui, grâce à la recherche en mathématique (voir sur Wikipedia les articles sur les nombres p-adiques et Oméga de Chaitin).
Nous étudions ici des numérations de positions. Un chiffre n’a pas la même valeur suivant l’endroit où il est placé dans le nombre, contrairement par exemple aux nombres romains. C’est bien plus pratique pour conduire des opérations, que ce soit à la main ou avec des machines. Beaucoup de mécanismes d’une base peuvent même être utilisés dans d’autres.
La notion de nombre étant difficile à définir précisément à notre niveau, on la considère acquise.
Un chiffre est un symbole utilisé pour écrire un nombre. Un nombre peut s’écrire à l’aide d’un ou de plusieurs chiffres.
Lequel de ces chiffres est le plus grand ? Lequel de ces nombres est le plus grand ?
Considérons un berger qui ne sait compter que jusqu’à trois et son troupeau de 17 moutons.
Dès qu’il arrive à 3 moutons, il en fait un paquet. Soit 5 paquets puisque 17=5×3+2. Il reste 2 moutons.
La division euclidienne est justement l’écriture d’un nombre entier en paquets, avec un éventuel reste.
Définition
On admet que pour tout entier $n$ et tout entier non nul $d$, il existe un unique couple d’entiers $q$ et $r$ tel que :
$$\left\{ \begin{array}{l} n = d × q + r \\\\ 0 \le r < d \end{array} \right.$$
On dira que l’on a effectué, ou écrit, la division euclidienne de n par d.
Exemple
139 = 15×7 + 6
On peut obtenir ce résultat de plusieurs façons :
Voici quelques exercices de calcul de restes à faire mentalement.
Attention Ne pas écrire de division à l’aide d’une fraction ou du symbole ÷. Toujours utiliser $n = q × d + r$, même si cette égalité peut décrire deux divisions.
Puis des paquets de trois « paquets de trois ». Ici on ne considère plus les moutons restés seuls à l’étape précédente. On a 1 paquet de trois (paquets de trois) et il en reste 2 (paquets de trois), puisque 5=1×3+2.
Ensuite, il faut voir si on peut regrouper en paquets de paquets de paquets. Comme 1 est strictement plus petit que 3, le quotient par 3 est nul : 1=0×3+1. Trouver « 0 » au quotient indique qu’il n’y aura plus de paquets d’ordre supérieur à faire.
Tant que le quotient n’est pas nul, on continue avec des paquets de paquets de paquets de paquets de paquets de paquets…
En écrivant les restes de droite à gauche, on obtient « 122 », que l’on notera entre parenthèses et avec un indice pour préciser la taille des paquets utilisés : $(122)_3$.
D’où l’importance de la position. Les trois chiffres n’ont pas le même « poids » suivant leur position.
La quatrième position aurait compté les paquets de paquets de paquets, soit 3×3×3 moutons.
Plutôt que d’écrire une suite de multiplications avec que des 3, on utilise la notation puissance :
$$ \begin{aligned} 17 &= 5×3 + 2 &(1) \\\\ &= (1×3 + 2)×3 + 2 &(2) \\\\ &= 1×3^{2} + 2×3^1 + 2×3^0 &(3) \\\\ \end{aligned} $$
Il y a, entre autres, trois façons de mener les calculs. Elles ont en commun l’utilisation de la division euclidienne, dont on ne peut se passer. Dans tous les cas, on trouvera bien $59 = (2012)_3$.
$$ \begin{aligned} 59 &= 19×3 + 2 \\\\ &= (6×3 + 1)×3 + 2 \\\\ &= ((2×3 + 0)×3 + 1)×3 + 2 \\\\ &= (((0×3 + \mathbf{2})×3 + \mathbf{0})×3 + \mathbf{1})×3 + \mathbf{2} \\\\ \end{aligned} $$
La présentation est fastidieuse, mais l’égalité mathématique est respectée d’une ligne à une autre. La lecture se fait naturellement de gauche à droite puisque les derniers restes, qui ont le poids fort, sont à gauche.
$$ \begin{aligned} 59 &= 19×3 + 2 \\\\ 19 &= 6×3 + 1 \\\\ 6 &= 2×3 + 0 \\\\ 2 &= 0×3 + 2 \\\\ \end{aligned} $$
Attention, la lecture se fait de bas en haut puisque les derniers restes, qui ont le poids fort, sont en bas.
Attention, la lecture se fait de bas en haut puisque les derniers restes, qui ont le poids fort, sont en bas.
Quels nombres représentent $(1)_3$, $(10)_3$, $(100)_3$, $(1000)_3$, $(1201)_3$, $(110221)_3$ ?
Comment représenter 1 en base 3 ? Même question pour 4, 10, 100, 1984 en base 3.
$$(10)_a = a$$
$$(1\underbrace{0....0}_{n~\text{zéros}})_a = a^n$$
La morphologie humaine est sans doute la cause de notre utilisation de la base 10, appelé « système décimal ». Notons que les puissances de 3 deviennent les puissances de 10, soit les unités, les dizaines, les centaines… On a mis du temps à le comprendre en primaire, mais les positions ont bien différents poids.
Ce système a besoin des 10 chiffres que nous connaissons bien, les chiffres dits « arabes », en fait inventés en Inde. Nous les connaissons tellement bien cette base que les égalités fondamentales y sont évidentes.
Pour plus de détails, voir l’article sur Wikipedia.
L’architecture matérielle des systèmes informatiques actuels est basée sur des phénomènes physiques à deux états :
Par convention, on représentera un de ces états par un 0, et l’autre par un 1.
Grâce à ces deux valeurs, en comptant en base 2 et en s’organisant bien, on peut représenter beaucoup d’entiers, des grands, et même bien plus de choses encore.
Exercice : Comment écrit-on le nombre 27 en base 2 ?
Comme les mots binaires sont très longs, les humains ne peuvent pas utiliser directement la base 2. La base 10 n’est pas pratique non plus car le travail de conversion n’est pas très simple. Comme 8 et 16 sont des puissances de 2, ce sont des bases plus pratiques pour parler et écrire à propos des ordinateurs, ou même « avec » les ordinateurs.
Le système en base 8 s’appelle l’octal mais n’est plus très utilisé.
La représentation d’un nombre en hexadécimal, ou en « hexa » pour les intimes, est son écriture en base 16. Ainsi, nous avons besoin de 16 chiffres ! Les 6 manquants ont été choisis ainsi : A, B, C, D, E et F.
Technique
En base 16, peu de chiffres suffisent à écrire des nombres très grands (chaque chiffre en hexa « pèse » une puissance de 16). Quels nombres représentent $(1)_{16}$, $(10)_{16}$, $(100)_{16}$, $(1000)_{16}$, $(1789)_{16}$, $(1984)_{16}$, $(FFFF)_{16}$ ?
Comment représenter 1 en base 16 ? Même question pour 4, 10, 15, 16, 100, 1024, 1789, 1984, 220.
Quartets
Comme 16 est une puissance de 2, les liens entre le binaire et l’hexa sont très forts. Exprimer les puissances de 16 en puissances de 2. On rappelle cette égalité concernant les puissances : $$\left(\left(a\right)^m\right)^n = \left(a\right)^{m×n}$$
On remarque que les puissances de 16 peuvent être obtenues en extrayant une
puissance de 2 sur quatre. Ce qui explique que :
« En hexadécimal, un seul chiffre code un quartet ».
Écrire une table de conversion hexa-décimal-binaire pour tous les quartets.
Octets
De combien de chiffres hexa a-t-on besoin pour coder un octet ? Écrire une table de conversion décimal-hexa-binaire pour les octets les plus célèbres.
Synthèse
Cette activité résume les calculs qu’il faut savoir faire. On remarque que pour les conversions directes de binaire en hexa ou inversement, il suffit de savoir convertir quartet par quartet.
Si on se donne deux mots binaires de même longueur, le résultat de cette opération reste un mot de même longueur. On note :
'mot1' & 'mot2' = résultat
Le caractère s’appelle esperluette et sera prononcé ici « et ». Le résultat est défini comme suit…
0 & 0 = 0 ; 0 & 1 = 0 ; 1 & 0 = 0 ; 1 & 1 = 1
On retrouve cette idée en logique des propositions, en logique booléenne, en électronique et en électricité.
On raisonne avec les bits de même poids face à face, pour reconstituer le résultat.
$$ \begin{aligned} (240)_{10} \& (154)_{10} &= (1111 0000)_2 \& (1001 1010)_2 &1)\\\\ &= (1001 0000)_2 &2)\\\\ &= (144)_{10} &3) \end{aligned} $$
1) et 3) conversions décimal -> binaire ou binaire -> décimal
2)
1111 0000
1001 1010
---------
1001 0000
1000 0000 0000 0001
1100 0000 0000 0011
1110 0000 0000 0111
1111 0000 0000 1111
1111 1000 0001 1111
1111 1100 0011 1111
1111 1110 0111 1111
1111 1111 1111 1111
Pour n’importe quel octet x,
0 & x = 0
255 & x = x
Elles se comportent comme en base 10. Les problèmes auxquels nous devont faire face sont dus :
Il est possible de vérifier son résultat en :
101
+1110
-----
101
+1110
-----
10011
1011
-101
----
1011
-101
----
0110
111
×1101
-----
111
×1101
-----
111
000.
111..
+111...
-------
1011011
10101 | 11
|----
|
|
|
|
---
10101 | 11
-11 |----
--- | 111
100 |
-11 |
--- |
11 |
-11 |
--- |
0 |