Un système de numération est un ensemble de règles qui régissent une, voire plusieurs numérations données. De façon plus explicite, c’est un ensemble de règles d’utilisation des signes, des mots ou des gestes permettant d’écrire, d’énoncer ou de mimer les nombres, ces derniers étant nés, sous leur forme écrite, en même temps que l’écriture, de la nécessité d’organiser les récoltes, le commerce et la datation. Le système de numération indo-arabe est aujourd’hui le plus répandu dans le monde.

Cette définition est bien jolie, mais elle est très technique quand même… Pour simplifier, nous utilisons un système de numération de base dix employant une notation positionnelle et dix chiffres. Voyons ensemble ce que cela veut dire.

# La numération indo-arabe

C’est donc celle que nous utilisons. Dans la description, il y a trois composantes à analyser:

  • la base dix ;
  • la notation positionnelle ;
  • les chiffres.

# Système décimal

Actuellement, il nous semble parfaitement normal de compter en base dix. D’ailleurs, on nous explique rarement que nous l’utilisons, tellement son usage est répandu.

Le système décimal implique de regrouper les valeurs par puissance de dix. Par exemple, pour écrire 431, on décrit :

Décomposition de 431 en décimal

Nous dirons que 431 contient quatre centaines, trois dizaines et une unité. Mais, si nous changeons de base et passons dans un système quinaire, en base cinq, le même nombre 431 se décrit comme :

Décomposition de 431 en quinaire

Si on l’écrit en décimal, on obtient 116.

Il est possible de choisir la base que nous voulons, en prenant en compte qu’il faut suffisamment de symboles, cinq en système quinaire, dix en décimal, vingt en vicésimal.

D’ailleurs, nous utilisons régulièrement des autres systèmes que le décimal :

  • système sexagésimal, base soixante, pour les heures et les degrés (ressortez vos cours de géométrie) ;
  • système vicésimal, base vingt, pour certains nombres, comme quatre-vingts (sauf si vous êtes logiques et dites huitante) ;
  • système duodécimal, base douze, pour certains mots comme la douzaine, pour les heures et les mois.

D’autres systèmes sont ou ont été utilisés dans l’histoire de l’humanité.

# La notation positionnelle

La notation positionnelle consiste à utiliser des symboles différents pour dénombrer des quantités différentes et utiliser la position pour spécifier la valeur. Le chiffre le plus à droite, avant la virgule, sera l’unité, et ensuite à chaque déplacement vers la gauche la valeur augmente d’une puissance.

valeur    1000 100 10 1
chiffres    3   1  4  7
          -------------
nombre             3147

En opposition, la notation additive consiste à utiliser des symboles différents pour spécifier la valeur et répéter les symboles pour dénombrer la quantité. Comme exemple, 203 en décimal s’écrit, en hiéroglyphes :

203 écrit en hiéroglyphes
ou
203 écrit en hiéroglyphes

La position n’étant pas importante, les symboles peuvent être mis dans l’ordre que vous voulez. Il serait même possible de les mélanger. Également, si une valeur n’est pas représentée, par exemple les dizaines, aucun symbole le sera utilisé.

# Les chiffres

Les chiffres sont les symboles utilisés pour écrire des nombres. La majorité de l’humanité s’est accordée pour utiliser les chiffres indo-arabes, de 0 à 9. Une fois assemblés ensemble, ces symboles permettent, en connaissant la base et le système de notation choisi, d’écrire des quantités.

# La numération binaire

En informatique, nous utilisons le niveau de courant électrique pour définir une valeur. Le plus simple est d’utiliser uniquement les deux cas les plus simples :

  • s’il n’y a pas de courant ;
  • s’il y a du courant.

En général, la valeur associée à l’absence de courant sera 0 ou faux alors que sa présence sera notée 1 ou vrai. C’est ce qu’on appelle le bit .

Nous avons donc un système avec deux symboles ce qui implique une base deux. Chaque chiffre, en partant de la droite, vaut une puissance de deux supplémentaire. Le premier chiffre vaut donc 1, le deuxième 2, le troisième 4, et ainsi de suite.

Si nous voulons compter, cela se fait comme en base décimale mais avec uniquement avec deux chiffres. Voici une liste des premiers nombres positifs :

Binaire Décimal
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9

Un petit exemple de conversion, la base est indiquée en indice après le nombre, ça nous permettra de bien la préciser par la suite.

Décomposition du nombre binaire 1101

Et un exemple moins mathématique :

valeur     8 4 2 1
chiffres   1 1 0 1
          --------
nombre          13

Bien évidemment, comme en système décimal, nous pouvons utiliser autant de colonnes que nécessaire. En vrai, c’est en général limité par les capacités de votre processeur c’est pourquoi il y a eu beaucoup de discussions il y a quelques années entre les processeurs 32 bits et ceux 64 bits, le second permettant de représenter des nombres plus grands. (C’est une simplification, la réalité est bien plus complexe mais pas pertinente ici.)

# La numération hexadécimale

En hexadécimal, base seize, il y a un problème, nous n’avons pas seize chiffres différents. C’est pourquoi il a été décidé de rajouter des lettres. Les symboles utilisés sont donc les chiffres de 0 à 9 et les lettres de A à F, majuscules ou minuscules, cela n’est pas important.

Une des raisons pour laquelle nous utilisons la numération hexadécimale est sa simplicité de conversion avec la numération binaire. Contrairement au système décimal, chaque chiffre hexadécimal peut être complètement converti en binaire. En construisant un nombre binaire avec quatre chiffres, il est possible de faire seize combinaisons, comme un nombre hexadécimal avec un chiffre.

Hexadécimal Binaire Décimal
04 0000 0100 4
0C 0000 1100 12
0F 0000 1111 15
10 0001 0000 16
6F 0110 1111 111
3F7 0011 1111 0111 879

Nous utilisons la notation hexadécimale pour simplifier la visualisation de la notation binaire, le nombre de chiffres utilisé étant divisé par quatre.

# La numération quaternaire

Sans m’attarder sur la question, car cette numération est très peu utilisée, Jacques Rouxel a fait un très bon épisode de sa super série Les Shadoks sur la numération quaternaire, utilisée par ces derniers. La méthode décrite est facilement généralisable à n’importe quelle base et permet donc de bien visualiser ce que j’ai expliqué dans ce billet. Je vous laisse visionner ce super épisode de moins de 3 minutes.

# La conversion entre les différentes numérations

# Vers la base dix

Pour convertir vers la base dix, il faut décomposer le nombre comme une somme des chiffres multipliés par un poids correspondant aux puissances successives de la base d’origine. Par exemple, pour convertir un nombre de base sept à base dix :

Conversion de base sept en base dix
Conversion de base sept en base dix

# Depuis la base dix

Pour convertir depuis la base dix, on utilise une succession de divisions entières.

# Division euclidienne

La division euclidienne, ou entière, consiste à associer deux entiers naturels (positifs), le dividende et le diviseur, avec deux autres entiers naturels, le quotient et le reste.

Division euclydienne

Cet exemple montre la division euclidienne 65 / 9.

# Conversion

Pour faire la conversion, il faut suivre les étapes suivantes :

  1. faire la division euclidienne avec :
    1. le dividende ayant pour valeur notre nombre initial, en base dix,
    2. le diviseur valant la base de destination ;
  2. récupérer le reste, il sera utilisé comme premier chiffre de notre nouveau nombre ;
  3. le quotient remplace le nombre initial ;
  4. répéter les trois premières étapes jusqu’à ce que le quotient soit nul.

# Exemple

Pour convertir 148010 en base 7 :

  1. 1480 = 7 × 211 + 3 ;
  2. j’écris mon reste, 3, comme premier chiffre de mon nouveau nombre ;
  3. 211 = 7 × 30 + 1 ;
  4. je rajoute mon reste, 1, au nombre précédent, 13 ;
  5. 30 = 7 × 4 + 2 ;
  6. je rajoute mon reste, 2, au nombre précédent, 213 ;
  7. 4 = 7 × 0 + 4 ;
  8. je rajoute mon reste, 4, au nombre précédent, 4213. Le quotient étant nul, je peux m’arrêter.

147310 est donc égal à 42137.

# Binaire, hexadécimal et octal

Les numérations binaire, hexadécimale et octale ont l’avantage de se convertir entre elles très facilement. Un chiffre hexadécimal étant égal à quatre chiffres binaires et un chiffre octal étant égal à trois chiffres binaires. Il est évidemment autorisé de rajouter des zéros en début de nombre pour avoir un nombre de chiffre multiple de trois ou quatre. Il faut donc séparer le nombre binaire par groupe de trois ou quatre bits, en partant de la droite, et convertir chacun de ces groupes en leurs valeurs octale ou hexadécimale.

binaire      0100 0110 0101 1101 1011
hexadécimal    4    6    5    D    B
binaire      001 000 110 010 111 011 011
octal         1   0   6   2   7   3   3

Donc, 10001100101110110112 vaut 465DB16 et 10627338 (et pour information, 288 21910).

# Conclusion

En vrai, il faut retenir quelques choses quand on parle de numération.

Que lorsque nous communiquons un nombre, par exemple 173 (pourquoi pas), il est établi que nous parlons en base dix. C’est en général le cas mais ça pourrait être de la base huit ou plus.

Les ordinateurs fonctionnent uniquement en binaire mais les informaticiens, contrairement à ce que la légende raconte, n’aiment pas écrire du binaire. D’où l’intérêt d’utiliser l’hexadécimal, beaucoup plus simple à écrire mais également très simple à convertir en binaire.

En dehors des numérations binaire ⇔ octale et binaire ⇔ hexadécimale, les conversions sont faisables mais un poil plus délicates, rien d’insurmontable mais en général il faudra sortir du papier et un crayon.