Ecriture d'un entier positif
Numérique et sciences informatiques

1800 av J.C
Les babyloniens définissent la notion de numération.
IVè siècle
En inde apparait le système décimal et le zéro permettant les calculs.
XVIIè siècle
Leibnitz définie la numération binaire.
1948
John Tukey crée le terme bit contraction des mots anglais binary digit qui signifient "chiffre binaire".
I. Le système décimal
En base 10 (celle que nous utilisons tous les jours), nous disposons de 10 symboles (appelés chiffres) notés : 0,1,2,3,4,5,6,7,8,9, pour représenter n’importe quel nombre.
Avec ces derniers, on peut compter jusqu'à 9.Et si l'on veut aller au-delà de 9, il faut changer de rang.
Cela signifie que si le rang des unités est plein, il faut passer à celui des dizaines, puis des centaines, milliers,etc.
Par exemple à 19, le rang des unités est "saturé" (plein), car il contient le chiffre 9, et il n'y a pas (dans la base 10) de valeur plus élevée. Il faut donc incrémenter le rang périphérique puis réinitialiser l'état de celui des unités. Ce qui signifie : j'ai 19, je ne peux pas mettre plus de 9 à droite, donc j'ajoute 1 à celui de gauche et je remets à zéro celui de droite : 20.
Un nombre entier est composé de rangs : unités, dizaines, centaines, etc. Chaque rang vaut le rang précédent multiplié par l'indice de la base. Une centaine vaut dix dizaines, et une dizaine vaut 10 unités.
Nombre = | Les milliers + | Les centaines + | Les dizaines + | Les unités + |
---|---|---|---|---|
Rang | 3 | 2 | 1 | 0 |
Nombre = | 1 milliers + | 9 centaines + | 7 dizaines + | 6 unités |
1976 = | 1 x 103 | 9 x 102 | 7 x 101 | 6 x 100 |
Valuer décimale = 1976 | 1000 | 900 | 70 | 6 |
1976 est décomposé en puissance de 10 et on peut décomposer n’importe quel nombre en puissance de sa base.
Un nombre est égal à la somme des valeurs de ses rangs, et on peut décomposer n'importe quel nombre en puissance de sa base.
II. Le binaire
D’un point de vue matériel, un ordinateur est un ensemble de composants électroniques parcourus par des courants électriques. Par convention, le passage d’un courant dans un composant est codé par le chiffre 1, l’absence de courant étant codé par un 0.
Ainsi, toute information stockée dans un ordinateur peut être codée par une suite finie de 0 et de 1 appelée suite de bits (binary digits). Une convention fixe la taille de ces suites finies de bits. Par exemple, un codage sur 4 bits signifie qu’une information est représentée en machine à l’aide de quatre 0 ou 1. L’ordre de ces bits importe de sorte que 0111 ne code pas la même information que 1110. En outre, les zéros présents en début de codage sont indispensables. Ainsi, sur 4 bits, 24 entiers naturels peuvent être codés ; par exemple, les entiers de 0 à 15.
Par exemple, le nombre 10011
occupe 5 bits.
Chaque rang en binaire ne peut avoir que deux valeurs (binaire = base 2) différentes : 0 ou 1.
Pour la base 10, chaque rang représente une puissance de 10, pour la base 2, chaque rang occupe une puissance de 2.
Voici comment compter en binaire jusqu'à 10 :
Nombre en décimal | Nombre en binaire | Le pourquoi du comment | |
---|---|---|---|
0 | 0 | 1er choix (rang 0) | |
1 | 1 | 2ème choix (rang 0) | |
2 | 10 | Le premier rang est rempli, on passe au suivant (rang 1)! | |
3 | 11 | On re-remplit le rang 1. | |
4 | 100 | Le rang 1 est plein, le rang 0 aussi, on passe au suivant. | |
5 | 101 | On continue en suivant la même méthode. | |
6 | 110 | ||
7 | 111 | ||
8 | 1000 | On commence le rang 3. | |
9 | 1001 | On continue comme tout à l'heure. | |
10 | 1010 | ||
... |
Entrainement 1 :
Combien de valeurs peut-on coder avec 1 bit ?
Combien de valeurs peut-on coder avec 2 bits ?
Combien de valeurs peut-on coder avec 3 bits ?
Combien de valeurs peut-on coder avec n bits ?
III. Conversion d'un décimale en binaire
Il existe plusieurs méthodes de conversion, mais nous allons étudier la plus simple et la plus rapide. Il s'agit de la méthode euclidienne.
Cette méthode, en plus d'être facile à utiliser en programmation (c'est un algorithme) est une des meilleures lorsqu'il s'agit de traiter les grands nombres.
Pour convertir un nombre donné dans le système décimal en binaire, il faut effectuer une suite de divisions entières (euclidienne) par le nombre 2 jusqu’à ce que le quotient soit égal à zéro. Il faut alors de prendre tous les « restes » obtenus au fur et à mesure et de les écrire dans l’ordre inverse (du dernier au premier) pour obtenir la notation en binaire.

Entrainement 2 :
- Convertir (185)10 en base 2. Voir une solution
- Convertir (42)10 en base 2
IV. Conversion d'un binaire en décimale
En binaire, nous disposons de deux chiffres : 0 et 1. On retrouve le même principe de décomposition en fonction de la base
Pour convertir le tout en décimale, on procède de la manière suivante : on multiplie par 20 la valeur du rang 0, par 21 la valeur du rang 1, par 22 la valeur du rang 2, [...], par 210 la valeur du rang 10, etc.
Rang | 3 | 2 | 1 | 0 |
---|---|---|---|---|
binaire | 1 | 0 | 1 | 1 |
Exposant = | 1 x 23 + | 0 x 22 + | 1 x 21 + | 1 x 20 |
Valuer décimale = 11 | 8 + | 0 + | 2 + | 1 |
Entrainement 3 :
- Convertir (11010011)2 en base 10 Voir une solution
- Convertir (10011001)2 en base 10
V. L'hexadécimal
Le binaire, c'est bien pratique : on peut coder des nombres uniquement avec des 0 et des 1. C'est bien pour les signaux électriques et tout le bazar, mais dans la vie de tous les jours c'est pas bien facile d'utilisation. On utilise couramment la base 10. Le problème c'est qu'en informatique, tout est basé sur le binaire, et étant une base d'indice 2, c'est plus aisé d'encoder les informations sur un nombre multiple de 2. On utilise donc souvent la base 16, appelé système hexadécimal (hexa = 6, déci = 10, 16 = 6 + 10) car 16 est un multiple de 2, et qu'il permet de représenter 8 bits avec seulement 2 chiffres. Ça paraît simple, mais il y a un autre problème : en base 10, on utilise 10 chiffres. En base 2 (binaire) on utilise seulement 2 chiffres : 0 et 1. Mais du coup, en base 16, il faut 16 chiffres.
En hexadécimal, nous disposons de seize symboles : dix chiffres de 0 à 9 et 6 lettres de A à F. Cela permet une représentation abrégée du binaire.
Ce qui donne :
0 1 2 3 4 5 6 7 8 9 A B C D E F
On peut établir une liste de correspondances entre la base 10, la base 16 et la base 2) :
Binaire (base 2) | Décimal (base 10) | Hexadécimal (base 16) |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
10 | 2 | 2 |
11 | 3 | 3 |
100 | 4 | 4 |
101 | 5 | 5 |
110 | 6 | 6 |
111 | 7 | 7 |
1000 | 8 | 8 |
1001 | 9 | 9 |
1010 | 10 | A |
1011 | 11 | B |
1100 | 12 | C |
1101 | 13 | D |
1110 | 14 | E |
1111 | 15 | F |
Comme vous pouvez le voir, le plus grand chiffre en hexadécimal est F, et il correspond à 15 en décimal et 1111 en binaire : F est donc encodé sur 4 bits (F_(hex) = 1111_(bin)).
Pour convertir un nombre binaire en base 16, on regroupe les bits 4 à 4, chaque groupe donnant un chiffre hexadécimal. À l'inverse, passer d'un nombre hexadécimal à sa représentation binaire se fait en remplaçant chaque chiffre pour son équivalent sur 4 bits.
Ainsi,
- (11011001)2 = (1101 1001)2 = D9_(16)
- 0x7F = (0111 1111)2 = (01111111)2
- Attention, si le nombre binaire de départ n'a pas un nombre de bits multiple de 4, il faut ajouter des zéros en tête (ce qui ne change pas sa valeur) afin de pouvoir les regrouper 4 par 4.
Entrainement 4 :
- Convertir (101111011001)2 en base 16
- Convertir (111011)2 en base 16
- Convertir (1A3E)16 en base 2
VI. Convertir un nombre décimal en hexadécimal
Pour convertir un nombre décimal en hexadécimal, la méthode est similaire au binaire, sauf que cette fois on divise par 16.

Entrainement 5 :
- Convertir (1387)10 en base 16
- Convertir (185)10 en hexadécimla Voir une solution
VII. Convertir un nombre hexadécimal en décimal
Le principe est le même que pour la conversation "binaire en décimal" sauf qu'au lieu d'utiliser des 2n on utilise des 16n :
Exemple :

(AB42)16 = 10 x 163 + 11 x 162 + 4 x 161 + 2 x 160
(AB42)16 = 10 x 4096 + 11 x 256 + 4 x 16 + 2 x 1
(AB42)16 = 43842
Vous avez remarqué que quand on trouve un B dans le nombre écrit en hexadécimal, on le remplace par un 11 dans le calcul. C'est exactement la même chose quand on trouve :
- un A, on le remplace par un 10
- un C, on le remplace par un 12
- un D, on le remplace par un 13
- un E, on le remplace par un 14
- un F, on le remplace par un 15
Entrainement 6 :
- Convertir (12B7)16 en base 10 Voir une solution
- Convertir (1B87)16 en base 10
VIII. Généralisation pour une base b
Nous avons vu ci-dessus comment convertir un nombre en base 10 en un nombre en base 16. Pour convertir un nombre n (en base 10) en sa représentation en base b, il faut suivre l'algorithme suivant :
- On appelle D la liste des chiffres (le résultat).
- Tant que n > 0
- Faire la division euclidienne de n par b.
- Ajouter le reste à D
- Mettre le quotient dans n
- Inverser l'ordre de D
Une solution en python :
def convertir (n,b):
"""b entier au moins égal à 2 donné en base 10
n entier naturel donné en base 10
renvoie l’écriture en base b d'un entier n par divisions en cascade"""
resultat = []
while n != 0:
resultat.append(n%b)
n //= b
resultat.reverse ()
return resultat
##################
print(convertir(15,2))
Toutefois, lorsque b est supérieur ou égal à 10, de nouveaux symboles devront être introduits pour les restes obtenus supérieurs ou égaux à 10.
Savoir faire
- Savoir passer de la représention d'une base dans une autre pour les bases 2,10,16
Fiche de cours