Le cours

REPRÉSENTER DES NOMBRES
1. INTRODUCTION
Les ordinateurs que nous utilisons permettent de travailler sur des nombres, des textes, des images, des
vidéos,...
Pourtant ces ordinateurs ne manipulent que des objets beaucoup plus simples : des 0 et des 1.
Mémoriser, transmettre et transformer des nombres, des textes, des images ou des sons demande donc d’abord
de les représenter comme des suites de 0 et de 1.
La mémoire des ordinateurs est composée de circuits électroniques qui ne peuvent être que dans deux états.
On a décidé de les appeler 0 et 1.
Une telle valeur, 0 ou 1, s’appelle un booléen, un chiffre binaire ou encore un bit (binary digit).
L’état d’un circuit, composé de plusieurs de ces circuits mémoire un bit,se décrit par une suite finie de 0 et de 1,
que l’on appelle un mot.
Exercice 1.1
On imagine un ordinateur dont la mémoire est constituée de quatre circuits mémoire un bit. Quel est le nombre
d’états possibles de la mémoire de cet ordinateur ?
Même question pour un ordinateur dont la mémoire est constituée de dix circuits mémoire un bit.
Et pour un ordinateur dont la mémoire est constituée de 34 milliards de tels circuits.
Exercice 1.2
On considère une « box internet » avec une diode électroluminescente, éteinte ou allumée selon un motif de 0
et de 1 qui change à chaque demi-seconde.
Lorsque la box est éteinte, la diode aussi, le motif est 0000000000…
Lorsque la box est allumée et fonctionne, la diode est allumée en continu, le motif vaut donc 1111111111…
Lorsque la box est en panne, le fournisseur d’accès souhaite que la diode clignote selon différents motifs en
fonction du type de panne : pas de réseau, réseau saturé, facture non payée, etc. On parle ainsi de clignotement
rapide pour le motif 0101010101.
Comment peut-on décrire les motifs suivants, répétés indéfiniment : 0000100000 et 0101010000 ?
Comment faut-il procéder pour qu’un motif donné ne s’affiche que toutes les dix secondes ?
2. REPRÉSENTER DES NOMBRES ENTIERS : LES SHADOKS
Le calcul a toujours donné beaucoup de fil à retordre aux Shadoks...
En effet n'ayant que quatre cases il ne pouvait pas compter plus que quatre... 1, 2, 3, 4...Mais le professeur
Shadoko avait réformé tout ca...
Quand il n'y a pas de Shadoks, on dit GA
Quand il y a un shadok de plus, on dit BU
Quand il y a encore un shadok de plus, on dit ZO
Et quand il y a encore un autre, on dit MEU .
Si je mets un shadok en plus, évidement, je n'ai plus assez de mots pour les compter...
alors c'est très simple: on les jette dans une poubelle, et je dis que j'ai BU poubelle.
Et pour ne pas confondre avec le BU du début, je dis qu'il n'y a pas de Shadok à coté de la poubelle et j'écris
BU GA.
Bu Shadok à coté de la poubelle: BU BU. Un autre : BU ZO. Encore un autre : BU MEU.
MEU poubelles et MEU Shadoks à coté : MEU MEU.
Arrivé là si je mets un Shadok en plus, il me faut une autre poubelle.
Mais comme je n'ai plus de mots pour compter les poubelles, je m'en débarrasse en les jetant dans une grande
poubelle. J'écris BU grande poubelle avec pas de petite poubelle et pas de Shadok à coté : BU GA GA.
Et on continue...
Exercice 2.1
1- Que vaut BU ZO GA MEU dans notre système de numération ?
2- Comment s'écrit 2012 dans le système du professeur Shadoko ?
On dit que Shadoko compte en base 4 alors que nous utilisons communément la base 10.
Il est plus naturel d'utiliser les symboles 0, 1, 2, 3 que GA, BU ZO, MEU.
3-Que vaut 1032 (base 4) en base 10 ?
4- Poser l'addition 1032+ 202 en base 4.
5- Poser la multiplication 103×22 en base 4.
3. CODER DES NOMBRES ENTIERS
Nous utilisons pour écrire les nombres une notation décimale (base 10) de position.
Le nombre 2345 représente un entier composé de 5 unités, 4 dizaines, 3 centaines et 2 milliers.
Mais nous aurions pu choisir de faire, au lieu de paquets de 10, des paquets de 5 ou de 4 (comme les Shadoks).
On dit alors que l'on écrit les nombres en base 5, 4,...
Exemples
•
Trouver la représentation en base cinq de 47.
Pour écrire les entiers naturels en base cinq, on a besoin de cinq chiffres : 0, 1, 2, 3, 4.
Quand on a n objets, on les groupe par paquets de cinq, qu’on groupe ensuite en paquets de cinq paquets, etc.
Autrement dit, on fait une succession de divisions par 5, jusqu’à obtenir un quotient égal à 0.
2
47=9×5+ 2=(1×5+ 4)×5+ 2=1×5 + 4×5+ 2
Le nombre 47 s'écrit donc 142 (en base 5)
Trouver la représentation en base dix du nombre 402 (en base cinq).
402 (en base cinq)=2×50+ 0×51+ 4×5 2=102
•
Exercice 3.1
Trouver la représentation en base cinq du nombre 944.
Trouver la représentation en base 10 du nombre 1224 (en base 5)
Exercice 3.2
En base seize, on a besoin de 16 chiffres : 0, 1, 2,3, 4, 5 , 6, 7, 8, 9, puis a (dix), b (onze), c (douze),d (treize), e
(quatorze) et f (quinze).
Trouver la représentation en base seize des nombres 6725 et 18 379.
Trouver la représentation en base dix des nombres 4e2c, abcd et 281ef (en base seize).
•
La base 2
Les nombres exprimés en base deux sont plus difficiles à lire, car il n’y a que deux chiffres, 0 et 1, mais le
principe de la numération en base deux est en tout point similaire à celui de la numération en base cinq.
Exemples
Trouver la représentation en base deux de 11.
11=1011 (en base 2) que l'on peut noter 1011
•
Trouver la représentation en base dix du nombre 1010 (en base deux).
1010=0×20 +1×21+ 0×22 +1×23 =10
Exercice 3.3
1- Trouver la représentation en base deux du nombre 1000.
2- Donner les représentations en base deux des nombres 1, 3, 7, 15, 31 et 63.
3- Poser l'addition 14+ 17 en base 2
Exercice 3.4
1- Expliquer cette phrase :"Il n'y a que 10 sortes de personnes, celles qui comprennent le binaire et celles qui
ne le comprennent pas."
2- Trouver la représentation en base dix du nombre 10010110 puis de 11110010000
Exercice 3.5
Pour multiplier par dix un entier naturel exprimé en base dix, il suffit d’ajouter un 0 à sa droite, par exemple,
12×10=120 . Quelle est l’opération équivalente pour les entiers naturels exprimés en base deux ?
Exprimer en base deux les nombres 3, 6 et 12 pour illustrer cette remarque.
Exercice 3.6
Quelle est la représentation binaire du nombre 57 ? Et celle du nombre 198 ?
Soit m un mot de 8 bits, n l’entier naturel représenté en décimal par le mot m , m ’ le mot obtenu en
remplaçant dans m chaque 0 par un 1 et chaque 1 par un 0 et n ’ l’entier naturel représenté en décimal par le
mot m ’ . Exprimer n et n ’ comme une somme de puissances de 2, montrer que n+ n ’ =255 .
Montrer que la représentation binaire du nombre 255 – n est obtenue en remplaçant dans celle de n chaque 0
par un 1 et chaque 1 par un 0.
Exercice 3.7
Écrire un algorithme, puis réaliser un programme permettant de convertir un entier binaire en décimal
Écrire un algorithme, puis réaliser un programme permettant de convertir un entier décimal en binaire
Remarque
Les premiers ordinateurs étaient capables de traiter simultanément des mots de 8 bits. Un groupe de 8 bits
s'appelle un octet (byte en anglais – à ne pas confondre avec bit).
Aujourd'hui la plupart des microprocesseurs peuvent traiter simultanément des mots de 32 ou 64 bits (suivant
que le architecture est 32 ou 64 bits).
À fréquence équivalente, dans un même cycle de temps, un microprocesseur utilisant des mots de 64 bits
manipule deux fois plus d'information qu'un microprocesseur 32 bits.
Exercice 3.7
1 - Quel est le plus grand entier que l'on puisse écrire sur 1 octets ? 2 octets ?
2 - Convertir 32 bits puis 64 bits en octets.
4. CODER DES ENTIERS RELATIFS
Une première méthode
Pour pouvoir représenter des entiers relatifs, on peut utiliser un bit de signe.
Ce codage utilise le bit de poids fort (bit le plus à gauche) pour représenter le signe (la valeur étant utilisée
pour un nombre positif et la valeur 1 pour un nombre négatif) et le reste des bits pour représenter la valeur
absolu de l'entier.
Ainsi sur 16 bits (2 octets), on peut coder 2×215−1 valeurs (de −32767 à + 32767 )
Exemples
•
•
0111 1111 =
0000 0001 =
0000 0000 =
1111 1111 =
1000 0001 =
1000 0000 =
Inconvénients
Il y a donc deux façons de coder le nombre 0
Il n'est pas possible d'utiliser l'addition usuelle si un des nombres est négatif :
1000 0001+ 0000 0011=1000 0100 ce qui signifierait que −1+ 3=−4 !
Une deuxième méthode : le complément à 2
On a donc préféré une autre méthode, qui consiste à représenter un entier relatif par un entier naturel.
Si on utilise des mots de 16 bits, on peut représenter les entiers relatifs compris entre -32 768 et 32 767 :
•
On représente un entier relatif x positif ou nul comme l’entier naturel x ,
•
Et un un entier relatif x , strictement négatif comme l’entier naturel x+ 216 =x+ 65536 ,
qui est compris entre 32 768 et 65 535.
Ainsi, les entiers naturels de 0 à 32 767 servent à représenter les entiers relatifs
positifs ou nuls, en vert sur la figure, et les entiers naturels de 32 768 à 65 535
décrivent les entiers relatifs strictement négatifs, en rouge sur la figure.
Exemple
L’entier relatif -1 est représenté comme l’entier naturel 65 535, c’est-à-dire par le
mot 1111 1111 1111 1111.
Cette manière de représenter les entiers relatifs s’appelle la notation en complément à deux.
Remarque
Avec des mots de seize bits, on écrit les entiers relatifs compris entre −215=−32 768 et 215 −1=32 767 .
Exercice 4.1
Quels entiers relatifs peut-on représenter avec des mots de 8 bits ? Combien
sont-ils ? Même question avec des mots de 32 bits et 64 bits.
Exercice 4.2
Trouver la représentation décimale des entiers relatifs dont la représentation binaire sur huit bits est 0000 0000,
0111 1111, 1000 0000 et 1000 0001
Exercice 4.3
Trouver la représentation binaire sur huit bits des entiers relatifs 7, -1 et -20
Exercice 4.4
Calculer la représentation binaire sur huit bits de l’entier relatif 4, puis celle de son opposé.
Même question pour le nombre 31
Remarque
Calculer 255− p=11111111− p est facile, puisqu’il suffit, dans la représentation binaire de p , de
remplacer chaque 0 par un 1 et chaque 1 par un 0 (voir l’exercice 3,6). Il suffit ensuite d’ajouter 1 au
nombre obtenu pour calculer 256-p
Exercice 4.5
Montrer que le bit le plus à gauche vaut 1 pour les entiers relatifs strictement négatifs et 0 pour les entiers
relatifs positifs ou nuls.
Exercice 4.6
Représenter les entiers relatifs 96 et 48 en binaire sur huit bits. Ajouter les deux nombres binaires obtenus en
utilisant l’algorithme de l’addition binaire. Quel est l’entier relatif obtenu ? Pourquoi est-il négatif ?
Exercice 4.7
Expliquer comment faire une soustraction de deux nombres binaires sur huit bits. Calculer ainsi 15−7
5. CODER DES NOMBRES À VIRGULE
Pour coder des nombres à virgule, on peut utiliser une représentation similaire à la « notation scientifique » des
calculatrices, sauf qu’elle est en base deux et non en base dix.
Un nombre est représenté sous la forme s m 2 n où s est le signe du nombre, n son exposant et m sa
mantisse.
Exemple
Quand on utilise 64 bits pour représenter un nombre à virgule, on utilise 1 bit pour le signe, 11 bits pour
l’exposant et 52 bits pour la mantisse.
•
Le signe + est représenté par 0 et le signe - par 1.
•
L’exposant n est un entier relatif compris entre -1 022 et 1 023 ; on le représente comme l’entier
naturel n+ 1 023 , qui est compris entre 1 et 2 046.
Les deux entiers naturels 0 et 2 047 sont réservés pour des situations exceptionnelles (+∞ , -∞ ,
NaN, etc.).
•
La mantisse m est un nombre binaire à virgule compris entre 1 inclus et 2 exclu, comprenant 52
chiffres après la virgule.
Comme cette mantisse est comprise entre 1 et 2, elle a toujours un seul chiffre avant la virgule et
ce chiffre est toujours un 1 ; il est donc inutile de le représenter et on utilise les 52 bits pour
représenter les 52 chiffres après la virgule.
Application
Pour trouver le nombre à virgule représenté par le mot
1100010001101001001111000011100000000000000000000000000000000000
•
On identifie le signe : 1 soit négatif
Ainsi le nombre codé est −
•
On cherche l'exposant : Le nombre 10001000110
correspond à 1094. L'exposant vaut donc 10231094=-71
•
La mantisse est égale à :
1 1 1 1 1
1
1
1
1
m=1+ + 4 + 7 + 8 + 9 + 10 + 15 + 16 + 17
2 2 2 2 2 2
2
2
2
206727
Soit m=
131072
206727 −71
×2 ≈−6,67×10−22
131072
Exercice 5.1
Comment est représenté le nombre à virgule 2−1022 (qui est égal à 2,225 …×10−308 )?
Exercice 5.2
Comment est représenté le nombre entier 7 ? Et le nombre à virgule 7,0 ?
Exercice 5.3
Quel est le plus grand nombre à virgule que l’on peut représenter en binaire ?
Quel est le plus petit nombre à virgule, donc négatif, que l’on peut représenter en binaire ? Quel est le plus
petit nombre à virgule strictement positif que l’on peut représenter en binaire ?