Vous êtes sur la page 1sur 89

Numération

Licence MIA semestre 2


mathématiques, informatique et applications

Madeleine Bonnet 1
Licence MIA 1ère année Université René Descartes
Contrôle des connaissances
 c1 mardi 22 mars à 17h
 c2 mardi 5 avril à 17h (avec prog 2)
 c3 mardi 10 mai à 17h
 c4 semaine des examens, à partir du 24 mai

 Note session 1 = (c1+c2+c3+c4-min(c1;c2;c3))/3


 Note session 2 = note d’examen écrit

Madeleine Bonnet 2
Licence MIA 1ère année Université René Descartes
Numération

 Traite de la dénomination, de la
représentation des nombres
 Comment représenter tous les nombres (il y
en a une infinité) à l’aide d’un ensemble fini
de symboles, assemblés selon des règles, le
code ?
 Au cours des âges, l’homme a fait
différents essais …

Madeleine Bonnet 3
Licence MIA 1ère année Université René Descartes
Bases de numération

 Un entier est représenté par une suite de symboles


(ou chiffres) qui ont une position précise dans la
suite
 La base b indique le nombre de symboles
disponibles
 Selon la base b, la suite s’interprète, dans le
système décimal (base 10), par un polynôme
arithmétique
(s3 s2 s1 s0)b = (s0∗b0+ s1∗b1 + s2∗b2+ s3 ∗ b3)10

Madeleine Bonnet 4
Licence MIA 1ère année Université René Descartes
 Principe de position
La signification d’un symbole (ou chiffre)
dépend de son poids, de sa place, dans la suite
des symboles qui est la représentation du
nombre
 Principe du zéro
Le zéro indique une position où il n’y a pas
d’éléments.
10 signifie 0 unité et 1 dizaine
Madeleine Bonnet 5
Licence MIA 1ère année Université René Descartes
Quelques bases utilisées ….
 binaire : {0, 1} en informatique, base de la logique booléenne
 base 5 : {0, 1, 2, 3, 4} …compter jusqu’à 30 avec ses doigts
 octale : {0, 1, 2, 3, 4, 5, 6, 7} avant …
 décimale : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} ……
 base 12 : établie sur les signes du zodiaque. Utilisée dans le commerce
(œufs, huîtres, 2 fois 12 heures dans une journée….)
 hexadécimale : très utilisée en microinformatique
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}
 Base 20 construite à partir des doigts et des orteils. Quelques traces :
quatre-vingts, quatre-vingt-dix, Hôpital des Quinze Vingts
 Base 60 : 360° dans le cercle, 60 minutes dans une heure, soixante,
soixante-dix …
Madeleine Bonnet 6
Licence MIA 1ère année Université René Descartes
Définitions

 Bit (BInary digiT) plus petite quantité


d’information
 Octet (byte en anglais) ensemble de 8 bits
– 1 octet = 8 bits
– 1 Kilo-octet (Ko) vaut 1024 octets
– 1 Méga-octet (Mo) vaut 1024 Ko
– 1 Giga-octet (Go) vaut 1024 Mo
– 1 Téra-octet vaut 1024 Go

Madeleine Bonnet 7
Licence MIA 1ère année Université René Descartes
Systèmes pondérés
 Système décimal (base 10)
alphabet = {0, 1, … , 9}
1942 = 1∗103 + 9∗102 + 4∗101 + 2∗100

– cette écriture utilise 4 positions d’un code à 10 positions

– chaque position porte le nom de digit


– de même, pour un nombre décimal
1942,57 = 1∗103 + 9∗102 + 4∗101 + 2∗100+ 5∗10-1+ 7∗10-2

 LSB least significant bit : bit de poids faible


 MSB most significant bit : bit de poids fort

Madeleine Bonnet 8
Licence MIA 1ère année Université René Descartes
Systèmes pondérés suite...

 Système à base b
alphabet = {0,1, … , b−1}
– code à b positions

écriture en base b xb= an an-1 ……a0

valeur en base 10 x10= anbn + an-1bn-1 …… + a0 b0

a0 est le LSB, an est le MSB

Madeleine Bonnet 9
Licence MIA 1ère année Université René Descartes
 Tout nb entier x, inférieur à bk se
décompose de manière unique sous
forme d’un polynôme de degré k-1 ayant
pour variable la base b, avec des
coefficients appartenant à l’alphabet
{0,1,…, b-1}

Madeleine Bonnet 10
Licence MIA 1ère année Université René Descartes
Exemple 1: entiers ≥ 0
 binaire {0,1}
exposant 11 10 9 8 7 6 5 4 3 2 1 0
nombre 1 01100110101

– code à 2 positions (2 bits)


– les bits de poids faible sont à droite

20 + 22 + 24 + 25 + 28 + 29 + 211= 286910

Madeleine Bonnet 11
Licence MIA 1ère année Université René Descartes
Exemples 2 : entiers ≥ 0
 octal {0, 1, 2, 3, 4, 5, 6, 7}

exposant 3 2 1 0
nombre (5 4 6 5)8 = 5∗80 + 6∗81 + 4∗82 + 5∗83

 hexadécimal
{0,1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}

(B35)16 = 5∗160 + 3∗ 161 + 11∗162

Madeleine Bonnet 12
Licence MIA 1ère année Université René Descartes
Exemples 3 : nombres décimaux

 octal {0, 1, 2, 3, 4, 5, 6, 7}

(465, 23)8 = 5∗80 + 6∗81 + 4∗82 + 2∗8-1+ 3∗8-2

 hexadécimal
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}

(B5, AE)16 = 5∗160 + 11∗161 + 10∗16-1+ 14∗16-2

Madeleine Bonnet 13
Licence MIA 1ère année Université René Descartes
Conversion facile (1)

 Conversion binaire ⇒ hexadécimal

0 0 1 0 0 1 1 0 1 0 1 1, 1 1 0 0 1 0 0 0
2 6 B , C 8
= 2∗162 + 6∗161 + 11∗160+ 12∗16-1 + 8∗16-2
= 619,7812

– on prend des paquets de 4 bits de part et d’autre


de la virgule

Madeleine Bonnet 14
Licence MIA 1ère année Université René Descartes
Conversion facile (2)

 Conversion binaire ⇒ octal

0 0 1 0 0 1 1 0 1 0 1 1, 1 1 0 0 1 0
1 1 5 3 6 2
= 83 + 82 + 5∗81+ 3∗80 + 6∗8-1+ 2∗8-2
= 619,78125
– on prend des paquets de 3 bits de part et
d’autre de la virgule

Madeleine Bonnet 15
Licence MIA 1ère année Université René Descartes
Conversion : entier en base 10 en base 2
par soustraction
 Exemple 173 à convertir en base 2
– bits nécessaires : c’est 8 bits car 27 ≤ 173 < 28

– Dans 173, y-a-t-il 128 ? oui 173 -128 = 45 1 (MSB)


– Dans 45, y-a-t-il 64 ? non, il reste toujours 45 0
– Dans 45, y-a-t-il 32 ? oui 45 - 32 = 13 1
– Dans 13, y-a-t-il 16 ? non, il reste toujours 13 0
– Dans 13, y-a-t-il 8 ? oui 13 - 8 = 5 1
– Dans 5, y-a-t-il 4 ? oui 5 - 4 = 1 1
– Dans 1, y-a-t-il 2 ? non, il reste toujours 1 0
– Dans 1, y-a-t-il 1 ? oui 1 - 1 = 0 1 (LSB)

 Le résultat est donc 10101101

Madeleine Bonnet 16
Licence MIA 1ère année Université René Descartes
Conversion : entier en base 10 en base 8
par soustraction …..

 Exemple 173 à convertir en base 8


– positions nécessaires : c’est 3 car 82 ≤ 173 < 83
– Dans 173, combien de fois 64 ? 2 fois 173 –2*64= 45
symbole en 3è position 2 (poids fort)
– Dans 45, combien de fois 8 ? 5 fois, il reste 5
symbole en 2è position 5
– On s’arrête car le reste est inférieur à 8
symbole en 1è position 5 (poids faible)
 (173)10 = (255)8

Madeleine Bonnet 17
Licence MIA 1ère année Université René Descartes
Conversion : entier en base 10 en base 2
par division
 Contrairement à la méthode par soustraction, on
recherche d’abord les symboles de plus petit poids
 173 à convertir en base 2
173 2
1 86 2
0 43 2
1 21 2
1 10 2
0 5 2
1 2 2
0 1

 (173)10 = (1 0 1 0 1 1 0 1)2
Madeleine Bonnet 18
Licence MIA 1ère année Université René Descartes
Conversion de base 10 en base b par division …

 173 à convertir en base 8


173 8
5 21 8
5 2 (173)10 = (255)8

 173 à convertir en base 16


173 16
13 10 (173)10 = (AD) 16

Madeleine Bonnet 19
Licence MIA 1ère année Université René Descartes
Reconnaître les multiples de la base
 D’après la forme polynomiale donnant la valeur
en base 10 d’un entier écrit en base b
xb = an an-1….. a0
x10 = an bn + an-1 bn-1 + an-2 bn-2 a
…. + 1 b1 a b0
+ 0
on voit que
– un multiple de b se termine par 0.
Il s’écrit x10 = b(an bn-1 + an-1 bn-2 + an-2 bn-3 …. + a1)

– un multiple de b2 se termine par 00


– un multiple de b3 se termine par 000 etc.

Madeleine Bonnet 20
Licence MIA 1ère année Université René Descartes
Conversion de la partie décimale

 De même que pour la conversion d’un


entier, la partie décimale peut s’obtenir
par deux méthodes
– soustraction
– multiplication
 Nous allons voir un exemple en base 2,
la généralisation à une autre base est
immédiate
Madeleine Bonnet 21
Licence MIA 1ère année Université René Descartes
Par soustraction
 Soit à convertir 0,28125 en base 2
 On cherche successivement les bits qui seront les
coefficients de 2-1, 2-2 , 2-3 , …
coefficient
– 2-1 vaut 0,5 0
– 2-2 vaut 0,25 0,28125-0,25 = 0,03125 1
– 2-3 vaut 0,125 0
– 2-4 vaut 0,0625 0
– 2-5 vaut 0,03125 1
 On s’arrête puisque le reste est nul, on a :
(0,28125)10 = (0,01001)2
Madeleine Bonnet 22
Licence MIA 1ère année Université René Descartes
Par multiplication
 Soit à convertir 0,28125 en base 2
 On applique la méthode par division vue pour la partie
entière. Or, diviser par 2-i revient à multiplier par 2i
– 0,28125∗2 = 0,5625 : coefficient de 2-1 est 0
– 0,5625∗2 = 1,125 : coefficient de 2-2 est 1
– 0,125 ∗2 = 0,25 : coefficient de 2-3 est 0
– 0,25 ∗2 = 0,5 : coefficient de 2-4 est 0
– 0,5 ∗2 = 1,0 : coefficient de 2-5 est 1

– On s’arrête puisque la partie décimale est nulle


(0,28125)10 = (0,01001)2
Madeleine Bonnet 23
Licence MIA 1ère année Université René Descartes
Vu en TD : conversion de 0,408 en base 2
 En appliquant la méthode précédente :
0,408 ∗2 = 0,816 : coefficient de 2-1 est 0
0,816 ∗2 = 1,632 : coefficient de 2-2 est 1
0,632 ∗2 = 1,264 : coefficient de 2-3 est 1
0,264 ∗2 = 0,528 : coefficient de 2-4 est 0
0,528 ∗2 = 1,056 : coefficient de 2-5 est 1
0,056 ∗2 = 0,112 : coefficient de 2-6 est 0
0,112 ∗2 = 0,224 : coefficient de 2-7 est 0
0,224 ∗2 = 0,448 : coefficient de 2-8 est 0
0,448 ∗2 = 0,896 : coefficient de 2-9 est 0
0,896 ∗2 = 1,692 : coefficient de 2-10 est 1
……………………………………………
 Est-on sûr que le processus s’arrête ?
Madeleine Bonnet 24
Licence MIA 1ère année Université René Descartes
Conversion partie décimale en base 8

 Toujours le nombre 0,28125 à convertir en base 8


– 0,28125∗8 = 2,25 coefficient de 8-1 : 2
– 0,25∗8 =2,0 coefficient de 8-2 : 2
Donc (0,28125)10 = (22)8
 On vérifie ce résultat en passant par la base 2.
– On a trouvé (0,28125)10 = (0,01001)2
– On décompose par paquets de 3 bits
0,010 010
2 2

Madeleine Bonnet 25
Licence MIA 1ère année Université René Descartes
Exercice

 Réfléchir à un algorithme qui « calcule »


le successeur d’un entier donné dans une
base donnée

Madeleine Bonnet 26
Licence MIA 1ère année Université René Descartes
Codage de l’information
 Toute information à traiter doit être
représentée en binaire pour être comprise par
la machine
 Leibniz (1646-1716) et Boole (1815-1864) ont
mis au point l’arithmétique binaire, base du
traitement automatique
 La signification associée dépend du contexte :
{0,1}, {faux, vrai}, {éteint, allumé},
{blanc, noir} ...

Madeleine Bonnet 27
Licence MIA 1ère année Université René Descartes
Codage de l’information suite…
 Une information, représentée par une suite de bits, n’a
que le sens que l’on veut bien lui donner
 Ainsi, nous avons déjà vu que la suite 101 représente
– cent un en base 10, cinq en base 2, dix en base 3, dix-sept en
base 4, vingt-six en base 5, trente sept en base 6 etc.
– Nous pouvons convenir qu’elle représente un caractère, une
image ou toute autre chose
 Pour traiter les suites de bits suivant les règles
adaptées aux objets représentés, il faut connaître le
code : alphabet et règles permettant de traduire
l’information

Madeleine Bonnet 28
Licence MIA 1ère année Université René Descartes
Codage de l’informations suite …
 Certains codes permettent de détecter et corriger des
erreurs grâce à l’ajout d’informations redondantes.
Ceci peut être très intéressant lors de transmission de
données où des erreurs peuvent apparaître.
 Selon l’application, le choix d’un code est très
important, notamment pour « économiser les
moyens ». On utilise alors des méthodes de
compression.
 Ne pas confondre codage et cryptage. Le cryptage est
un moyen pour transformer une suite de données afin
d’assurer sa confidentialité

Madeleine Bonnet 29
Licence MIA 1ère année Université René Descartes
Comment coder les entiers
en machine ?

 Quelle que soit la taille des mots mémoire,


cette taille sera toujours limitée

 Il faut pouvoir représenter les entiers relatifs

 Les opérations arithmétiques doivent être


simples

Madeleine Bonnet 30
Licence MIA 1ère année Université René Descartes
Codage des entiers en binaire

 Décimal codé binaire (entiers ≥ 0 seulement)


 Codage binaire naturel
 Codage complémenté
–à1
– à 2 : c’est le codage des entiers en Pascal

Madeleine Bonnet 31
Licence MIA 1ère année Université René Descartes
Décimal codé binaire
 Chaque chiffre décimal est codé en binaire
– (il faut donc 4 bits par chiffre)
– 19032 codé par 0001 1001 0000 0011 0010
 Avantages
• codage/décodage facile
• pas de limitation des grandeurs représentées
 Inconvénients
• grande place mémoire ⇒ opérations arithmétiques
lentes (penser au traitement de la retenue)
• pas de représentation des entiers négatifs
• 6 combinaisons non utilisées
Madeleine Bonnet 32
Licence MIA 1ère année Université René Descartes
Codage binaire naturel
 Le bit de poids fort (à gauche) est réservé au signe
• 0 pour + et 1 pour −
 On doit fixer la longueur des mots
• + 6 codé par 0 110 − 6 codé par 1 110
 Avantages
• codage/décodage facile
• représentation des entiers négatifs
 Inconvénients
• limitation de la grandeur des nombres représentables
• 2 représentations du zéro
• opérations arithmétiques peu commodes (0101 +1101)
Madeleine Bonnet 33
Licence MIA 1ère année Université René Descartes
Complément à 1 : définition
 On fixe la taille des mots du code
 entiers positifs codés en binaire signé
+5 codé par 0101
 entiers négatifs : inversion des chiffres binaires
−5 codé par 1010

 Inconvénients
• 2 représentations du zéro
• opérations arithmétiques peu commodes

Madeleine Bonnet 34
Licence MIA 1ère année Université René Descartes
Complément à 1 (suite …)

 Addition binaire (5 − 5) ⇒ 0101


+ 1010
(d’où le nom ) =

On remarque qu’un nombre négatif s’obtient, en


complément à 1, par soustraction de la valeur
positive à 2n − 1

Sur 4 bits, − 5 est donné par

1111 représente 24 − 1
−0101
Madeleine Bonnet 35
Licence MIA 1ère année Université René Descartes
Complément à 1 : addition

2 nombres de signe opposé p et q


 on sait que le résultat est forcément
représentable dans ce code avec le nombre de
bits fixés car

min(p, q) < p + q < max (p, q)

Madeleine Bonnet 36
Licence MIA 1ère année Université René Descartes
Complément à 1 : addition

 Pour avoir − 28, on calcule d’abord + 28


+ 28 0001 1100

 + 63 0011 1111
− 28 1110 0011

+ 35

Madeleine Bonnet 37
Licence MIA 1ère année Université René Descartes
Complément à 1 : qu’avons-nous fait ?
 En binaire naturel on a effectué l’opération
suivante (traduite ici en base 10) :
63 + (255 − 28) = 318 − 28 = 290

28 − 1 demande plus de 8 bits

Pour obtenir le résultat en binaire naturel (ici


confondu avec le code complémenté à 1), il faut
évidemment retrancher 255.
Enlever la retenue revient à retrancher 28 = 256, il
faut donc encore ajouter 1.
C’est pourquoi l’on dit « on ajoute la retenue » !

Madeleine Bonnet 38
Licence MIA 1ère année Université René Descartes
Addition (suite …)

2 nombres de signes opposés :


− 63 11000000
+ 28 00011100

qui, en complément à 1 vaut − 35

Qu’avons-nous fait ?
(255 − 63) + 28 = 220

8 bits suffisent donc pas de retenue


Le résultat est directement donné en complément à 1

Madeleine Bonnet 39
Licence MIA 1ère année Université René Descartes
Complément à 1 : addition

 2 nombres de signe positif


– Dépassement réel de capacité quand le bit de signe du
résultat est 1
– Exemple sur 4 bits (nombres représentables de -7 à 7)

+3 0011 +3 0011
+2 0010 +6 0110

 2 nombres de signe négatif

Madeleine Bonnet 40
Licence MIA 1ère année Université René Descartes
Complément à 1 : addition

 2 nombres de signe négatif


– Il y a une retenue puisque les bits de signe valent 1
– Exemple sur 4 bits (nombres représentables de -7 à 7)
−3 1100 −3 1100
−2 1101 −6 1001

– On « ajoute la retenue »
» 0 pour bit de signe donne dépassement réel de
capacité
» 1 pour bit de signe, on lit le résultat
(en complément à 1)

Madeleine Bonnet 41
Licence MIA 1ère année Université René Descartes
Conclusions sur l’addition
2 nombres de signe opposé
• le résultat est représentable, avec le nombre de bits
fixés pas de dépassement « réel » de capacité
• s’il n’y a pas de retenue : nombre négatif
sa valeur absolue est obtenue en inversant les bits
• s’il y a une retenue : nombre positif
on « ajoute la retenue » pour avoir la valeur
absolue
 2 nombres de même signe
• positifs
• négatifs

Madeleine Bonnet 42
Licence MIA 1ère année Université René Descartes
Conclusions sur l’addition (suite …)

2 nombres de signe positif


– dépassement « réel » de capacité quand le bit de
signe du résultat est 1
2 nombres de signe négatif
– il y a une retenue puisque les 2 bits de signe sont 1
– on ajoute la retenue
» 0 pour bit de signe donne un dépassement « réel » de
capacité
» 1 pour bit de signe, on lit le résultat (en complément à 1)

Madeleine Bonnet 43
Licence MIA 1ère année Université René Descartes
Complément à 2 : définition

 On fixe la taille des mots du code


 entiers positifs codés en binaire signé
 entiers négatifs
• ajouter 1 au complément à 1 (complément à 2)
Exemple : (− 6)10

valeur absolue 0110


complément à 1 1001
complément à 2 1010

Madeleine Bonnet 44
Licence MIA 1ère année Université René Descartes
Complément à 2 (suite …)

 Sur n bits, un nombre négatif est représenté


par le complément à 2n de son opposé
exemple : avec n = 4
− 5 a pour code l’équivalent de 24 − 5 = 11

−5 1011
+5 0101

Madeleine Bonnet 45
Licence MIA 1ère année Université René Descartes
Complément à 2 (suite …)
Sur 4 bits
0000 0
1111 −1 0001 1 24 valeurs distinctes
1110 −2 0010 2 de
1101 −3 0011 3 −8 à +7
1100 −4 0100 4 soit de
1011 −5 0101 5
1010 −6 0110 6 − 24−1 à 24−1 −1
1001 −7 0111 7
1000 −8

Avantages • une seule représentation du zéro


• opérations faciles
Madeleine Bonnet 46
Licence MIA 1ère année Université René Descartes
Complément à 2 : opérations faciles

+5 0101 en ignorant le report on trouve zéro


−5 1011 Pourquoi ?
0

Madeleine Bonnet 47
Licence MIA 1ère année Université René Descartes
Complément à 2 : opérations faciles

3 0011 4 0100
−5 1011 −3 1101

− 2 en complément à 2 on ignore la retenue


pourquoi ?

Madeleine Bonnet 48
Licence MIA 1ère année Université René Descartes
Complément à 2 : opérations faciles

+3 0011 −5 1011 −5 1011


+5 0101 −4 1100 −2 1110

dépassement dépassement pas de dépassement

Madeleine Bonnet 49
Licence MIA 1ère année Université René Descartes
Addition en complément à 2

 Attention au dépassement de capacité :


• il n’y en a pas si les 2 nombres sont de
signe opposé
• il n’y a dépassement que si la retenue
propagée sur le bit de signe diffère de celle
engendrée par l’addition de ces bits

Madeleine Bonnet 50
Licence MIA 1ère année Université René Descartes
Dépassement de capacité
 Codage en complément à 2 sur 8 bits : entiers
représentables de –128 à +127
 Que se passe-t-il en cas de dépassement de
capacité ?
 Exemple : – 127 – 10
– 127 s’écrit 10000001
– 10 s’écrit 11110110
1 01110111
Dépassement de capacité puisque le bit de signe est 0
En omettant la retenue, on a
(256 – 127) + (256 – 10) – 256 = +119

Madeleine Bonnet 51
Licence MIA 1ère année Université René Descartes
Dépassement de capacité ….
 Exemple : + 127 + 10

+ 127 s’écrit 0111 1111


+ 10 s’écrit 0000 1010
1000 1001

 Dépassement de capacité puisque le bit de signe est 1

 En complément à 2, ce nombre se lit –119,


c’est-à-dire (127 +10) –128 –128
 Selon le cas, on ajoute ou on retranche 256
pour obtenir le résultat
Madeleine Bonnet 52
Licence MIA 1ère année Université René Descartes
Exemple en Pascal

 Entiers de type integer codés sur 2


octets : −215 à 215−1
 i : = 32000 ;
i := i + 4000 ;
donnera à la valeur i : - 29536
qui est
−32000 + 4000 − 32768 32768

Madeleine Bonnet 53
Licence MIA 1ère année Université René Descartes
Autres codes
 En utilisant le code binaire décimal (chiffre décimal
codé sur 4 bits) on a vu plusieurs inconvénients :
place mémoire, calculs peu faciles. Les retenues
imposent un traitement spécial
– 8+9 = 17 s’écrit sur 5 bits (1000 + 1001) = 10001 où le 5è bit
est la retenue
– 8+4 = 12 s’écrit sur 4 bits(1000 + 0100) = 1100
 Une solution est donnée par le code ‘plus 3’ (excess3)
où l’on ajoute 3 à chaque chiffre décimal avant de le
traduite en binaire
– Voir avantages, inconvénients en exercice

Madeleine Bonnet 54
Licence MIA 1ère année Université René Descartes
Autres codes

 On pourra chercher les codes suivants


– Code biquinaire utilisé en téléphonie : mot
binaire de 7 bits contenant exactement 2
bits de valeur 1, l’un parmi les deux
premiers, l’autre parmi les cinq derniers
– Code Hollerith utilisé pour les cartes
perforées
– Code Gray ou binaire réfléchi : codage
binaire dans lequel un nombre ne diffère de
son prédécesseur que par un bit

Madeleine Bonnet 55
Licence MIA 1ère année Université René Descartes
Code de Gray

 Utilisé en théorie des circuits logiques


 Un code de Gray d’ordre n est une
permutation des 2n mots de n bits dans un
ordre tel que le mot i+1 diffère du mot i par
un seul bit
 Exemple sur 3 bits :
000 001 011 010 110 111 101 100
 Existe-t-il une autre permutation qui donnerait
un code différent ?

Madeleine Bonnet 56
Licence MIA 1ère année Université René Descartes
Code de Gray sur 4 bits

 Chercher des codes de Gray sur 4 bits


 Il en existe 11 distincts

Madeleine Bonnet 57
Licence MIA 1ère année Université René Descartes
Code de Gray sur 5 bits
 0 00000 9 01101
 1 00001  10 01111
 2 00011
 11 01110
 3 00010
 12 01010
 4 00110
 5 00111  13 01011
 6 00101  14 01001
 7 00100  15 01000
 8 01100  16 11000

Poursuivre, réfléchir au décodage, aux


autres codes sur 5 bits
Madeleine Bonnet 58
Licence MIA 1ère année Université René Descartes
Qu’est-ce que la compression ?

 L’objectif est de réduire le nombre de


bits utilisés pour stocker ou transmettre
des informations
 Deux types de compression
– Sans perte : fichiers pour lesquels la perte
d’un bit peut être catastrophique
– Avec perte : appliquée aux sons et aux
images numérisés

Madeleine Bonnet 59
Licence MIA 1ère année Université René Descartes
Compression de données =
modélisation + codage
 Flot de symboles transformé en codes
 Compression efficace : flot de codes qui
résulte plus petit que le flot original
 Le code dépend d’un modèle. Le modèle
définit les probabilités d’occurrence de
chaque symbole pour produire le code
Flot symboles probabilités Codeur Flot
Modèle
entrée sortie

Madeleine Bonnet 60
Licence MIA 1ère année Université René Descartes
Codage de Huffman
 Comment, à partir d’un modèle de
probabilités, coder avec des mots de
longueur variable (sur un nombre entier de bits) ?
 Modèle : chaque symbole est affecté de
son poids, la fréquence ou probabilité
d’apparition du symbole
 Création d’un arbre binaire par une
procédure simple

Madeleine Bonnet 61
Licence MIA 1ère année Université René Descartes
Codage de Huffman : exemple
Α B C D E
15 7 6 6 5

Pour coder ces cinq lettres avec un code de longueur fixe


il faudrait 3 bits par lettre, soit 9 bits pour coder le mot BAC

Madeleine Bonnet 62
Licence MIA 1ère année Université René Descartes
Codage de Huffman : exemple
Α B C D E
15 7 6 6 5

11

Pour coder ces cinq lettres avec un code de longueur fixe


il faudrait 3 bits par lettre, soit 9 bits pour coder le mot BAC

Madeleine Bonnet 63
Licence MIA 1ère année Université René Descartes
Codage de Huffman : exemple
Α B C D E
15 7 6 6 5

13 11

Pour coder ces cinq lettres avec un code de longueur fixe


il faudrait 3 bits par lettre, soit 9 bits pour coder le mot BAC

Madeleine Bonnet 64
Licence MIA 1ère année Université René Descartes
Codage de Huffman : exemple
Α B C D E
15 7 6 6 5

13 11

24

Pour coder ces cinq lettres avec un code de longueur fixe


il faudrait 3 bits par lettre, soit 9 bits pour coder le mot BAC

Madeleine Bonnet 65
Licence MIA 1ère année Université René Descartes
Codage de Huffman : exemple
Α B C D E
15 7 6 6 5

13 11

24

39

On remarque que le nœud final a pour poids la somme


des poids initiaux

Madeleine Bonnet 66
Licence MIA 1ère année Université René Descartes
Codage de Huffman
 Symboles, affectés de leur poids, alignés sous forme
d’une chaîne de nœuds
 Les deux nœuds de plus faible poids sont appariés et
donnent un nouveau nœud ayant pour poids la somme
des poids de ses fils
 Les nœuds fils sont enlevés de la liste et remplacés
par le nœud parent
 À partir du nœud père, on désigne l’un des fils comme
donnant le code 0, l’autre donnant le code 1
 On répète les étapes précédentes tant qu’il reste plus
qu’un nœud libre

Madeleine Bonnet 67
Licence MIA 1ère année Université René Descartes
Codage de Huffman : exemple
Α B C D E
15 7 6 6 5
0 1 0 1
13 11
0
0 1
24
1
39 Α 0
Il ne faut plus que 7 bits Β 100
pour coder le mot BAC C 101
D 110
E 111
Madeleine Bonnet 68
Licence MIA 1ère année Université René Descartes
Remarques sur ce code

 Le décodage se fait sans ambiguïté car aucun


mot de code n’est préfixe d’un autre
 Le décodage peut être fait au fur et à mesure,
sans attendre la fin du message
 Les poids affectés aux lettres représentent, par
exemple, la fréquence d’apparition des lettres
dans un texte
 Les symboles de plus forte probabilité ont des
cades plus courts

Madeleine Bonnet 69
Licence MIA 1ère année Université René Descartes
Précision finie

 ATTENTION
Les calculs en précision finie sont différents de ceux
de l’algèbre normale
 Exemple :
soient les entiers > 0, en base 10, sur 3 chiffres
• loi associative a = 700, b = 400, c = 300
a + (b − c) = (a + b) − c en algèbre normale

• loi distributive a = 5, b = 210, c = 195


a ∗ (b − c) = (a ∗ b) − (a ∗ c) en algèbre normale

Madeleine Bonnet 70
Licence MIA 1ère année Université René Descartes
Réels en virgule fixe

 Virgule fixe en base 2


101 représente 5 si la virgule est implicitement à droite
101 représente 0,625 . . . . . . . . . . . . . . . . . . . . . . . à gauche
 Comment représenter des nombres d’ordre de
grandeur très différent ?
• masse d’un électron 9 ∗ 10 −28 grammes
• masse du Soleil 2 ∗ 10 +33 grammes

Madeleine Bonnet 71
Licence MIA 1ère année Université René Descartes
Réels en virgule flottante
 Codage semblable à celui de la notation
scientifique, le nombre décimal x s’écrit :

x = ± m 10e ici en base 10, où

– mantisse m précise les chiffres significatifs


– exposant e donne l’ordre de grandeur
 Exemple (en base 10)
37,52 = 37520 10−3
= 3752 10−2
= 0,0003752 105
= 0,3752 102
représentation normalisée
Madeleine Bonnet 72
Licence MIA 1ère année Université René Descartes
Réels en virgule flottante
 Dans cette représentation normalisée
0,3752 102
– Les chiffres significatifs sont à droite de la virgule
– La virgule n’est pas représentée
– La mantisse est un nombre inférieur à 1
– Le bit de poids fort est différent de 0

 Le zéro n’est alors pas représentable. Par


convention sa représentation ne contient que des
zéros

Madeleine Bonnet 73
Licence MIA 1ère année Université René Descartes
Exemple

 soit une représentation comprenant


• une mantisse signée de 3 chiffres
• un exposant signé de 2 chiffres

 les nombres positifs représentables vont de


0,100 ∗10−99 à + 0,999 ∗10+99
 les nombres négatifs représentables vont de ...
(199 ordres de grandeur avec seulement 5 chiffres et 2 signes)
 MAIS, tous les réels compris dans cet intervalle ne sont pas
représentables

Madeleine Bonnet 74
Licence MIA 1ère année Université René Descartes
Réels virgule flottante en base 2
 Base 10 27 = 0,27 10+2
 Base 2
(11011) = (0,11011) 2(101)
que l’on peut coder par exemple sur 4 octets
signe signe

0000 0101 0110 1100 0000 0000 0000 0000

exposant mantisse

Madeleine Bonnet 75
Licence MIA 1ère année Université René Descartes
Représentation des signes
 Les signes de la mantisse et de l’exposant
n’apparaissent pas explicitement
 Pour la mantisse, on réserve un bit selon la
convention habituelle
 Pour l’exposant on utilise la méthode dite du
biais. Si l’on dispose de n bits on veut pouvoir
représenter 2n exposants distincts :
• de − 2n-1 à 2n-1−1
• pour obtenir la représentation de l’exposant : écrire
sa valeur en binaire signé et ajouter 2n-1

Madeleine Bonnet 76
Licence MIA 1ère année Université René Descartes
Exposants biaisés
 Sur n bits, pour obtenir un entier, on ajoute le biais
2n-1 et on représente le résultat en binaire naturel
 Exemple, sur 3 bits, le biais est +4
 − 4 s’écrit 000 (–4 +4)
 − 3 s’écrit 001 (–3 +4)
 − 2 s’écrit 010 (–2 +4)
 − 1 s’écrit 011 (–1+4)
 0 s’écrit 100 (0 + 4)
 1 s’écrit 101 (1 + 4)
 2 s’écrit 110 (2 + 4)
 3 s’écrit 111 (3 + 4)
 Inversement, étant donnée une représentation, on retranche
le biais pour obtenir la valeur de l’exposant
Madeleine Bonnet 77
Licence MIA 1ère année Université René Descartes
Réels en virgule flottante
 Du nombre d’octets réservés à la représentation
en machine des réels dépend
• l’ordre de grandeur des nombres : exposant
• la précision donnée par le nombre de chiffres
significatifs : mantisse

Madeleine Bonnet 78
Licence MIA 1ère année Université René Descartes
Procédé du bit caché
 En base 2, à cause de la normalisation, on
perd une possibilité d’information
 Pour un mot mémoire comportant n bits, on
gagnera 1 bit de précision en ne représentant
pas le bit 1 après la virgule
 Ce bit figure implicitement mais n’est pas
représenté
 On peut donc avoir une représentation de la
mantisse ne contenant que des zéros

Madeleine Bonnet 79
Licence MIA 1ère année Université René Descartes
Les réels forment un ensemble DISCRET

 Soit un mot mémoire de 6 bits

signe exposant mantisse en binaire normalisé


Pour ne pas représenter le signe de l’exposant
on utilise la méthode du biais
valeur décimale exposant
majoré de 2
00 représente −2 110 + 10
01 représente −1 11 +10
10 représente 0 0 +10
11 représente 1 1+10
Madeleine Bonnet 80
Licence MIA 1ère année Université René Descartes
Exposant biaisé
 Si l’exposant est représenté sur n bits, cette méthode
permet de représenter 2n valeurs distinctes, de − 2n-1 à
2n-1 − 1
 On définit le biais par 2n-1
 Pour avoir la représentation binaire d’un exposant, on
ajoute le biais à l’exposant et on écrit le résultat en
binaire naturel
 À partir de la représentation binaire, il suffit de
retrancher le biais pour obtenir la valeur de
l’exposant
 Avantage : quand on cherche le successeur d’un réel
positif, on peut faire l’addition sur tous les bits de la
représentation du réel
Madeleine Bonnet 81
Licence MIA 1ère année Université René Descartes
Exercice
 Écriretous les mots binaires de 6 bits, sans bit caché
 Donner la valeur du réel correspondant
 Calculer la différence de 2 réels « consécutifs »

contenu valeur décimale valeur décimale valeur décimale différence


exposant mantisse mot mémoire

0 11 111 1 0,875 1,75


0 11 110 1 0,75 1,5 0,25
0 11 101 1 0,625 1,25 0,25
0 11 100 1 0,5 1 0,25
0 10 111 0 0,875 0,875 0,125
0 10 110 0 0,75 0,75 0,125
0 10 101 0 0,625 0,625 0,125
0 10 100 0 0,5 0,5 0,125
Madeleine Bonnet 82
Licence MIA 1ère année Université René Descartes
 contenu valeur décimale valeur décimale valeur décimale différence
exposant mantisse mot mémoire

0 10 100 0 0,5 0,5 0,125


0 01 111 −1 0,875 0,4375 0,0625
0 01 110 −1 0,75 0,375 0,0625
0 01 101 −1 0,625 0,3125 0,0625
0 01 100 −1 0,5 0,25 0,0625
0 00 111 −2 0,875 0,21875 0,03125
0 00 110 −2 0,75 0,1875 0,03125
0 00 101 −2 0,625 0,15625 0,03125
0 00 100 −2 0,5 0,125 0,03125
1 00 100 −2 0,5 − 0,125 0,25
1 00 101 −2 0,625 −0,15625 0,03125
1 00 110 −2 0,75 −0,1875 0,03125
1 00 111 −2 0,875 −◊,21875 0,03125
Madeleine Bonnet 83
Licence MIA 1ère année Université René Descartes
Sur cet exemple, les réels sont divisés en 7 zones

débordement inférieur
négatif positif

négatifs positifs
exprimables exprimables
−1,75 −0,125 0 0,125
1,75

débordement débordement
supérieur supérieur
négatif positif
Madeleine Bonnet 84
Licence MIA 1ère année Université René Descartes
Successeurs et prédécesseurs
 Comment calculer le successeur d’un réel x ≠ 0
dans une représentation fixée ?
 Soit E l’exposant vrai, M la valeur de la mantisse et
m sa longueur : x = ± M 2E
 Si x n’est pas une puissance de 2 alors
 Suc(x) = x + 2E –m
 Préd(x) = x − 2E –m
 Si x est une puissance de 2
 x >0, suc(x) = x + 2E –m ;
 préd(x) = x − 2E –(m+1)
 x <0, suc(x) = x + 2E –(m+1) ;
 préd(x) = x − 2E –m

Madeleine Bonnet 85
Licence MIA 1ère année Université René Descartes
Utilisation du bit caché
 Dans l’exemple précédent, bien que la mantisse utilise
3 bits nous n’avons eu que 4 mantisses distinctes :
100, 101, 110, 111

 Toujours avec une représentation sur 6 bits, supposons


qu’il y a un bit caché.
La mantisse fait apparaître toujours 3 bits mais il y a un bit
supplémentaire, caché, de poids fort
Il y a alors 8 mantisses possibles :
o 000 soit 0,5 o 100 soit 0, 75
o 001 soit 0, 5625 o 101 soit 0, 8125
o 010 soit 0,625 o 110 soit 0,875
o 011 soit 0, 6875 o 111 soit 0,9375
La précision est augmentée
Madeleine Bonnet 86
Licence MIA 1ère année Université René Descartes
Sur cet exemple, avec bit caché

 Donner les valeurs extrêmes des réels


représentables
 Calculer, selon les cas, l’écart entre
deux réels « successifs »

Madeleine Bonnet 87
Licence MIA 1ère année Université René Descartes
Caractères alphanumériques

 Code normalisé ASCII American Standard Code for


Information Interchange
– utilisait 7 bits donc 128 caractères représentables
– a été étendu à 8 bits pour représenter des commandes de
format, de séparation, de communication etc.
 La lettre « a » est codée par l’entier 97 en binaire
naturel : 110 0001
 Le code ASCII ajoute, à gauche 1 bit de parité
1110 0001

Madeleine Bonnet 88
Licence MIA 1ère année Université René Descartes
Caractères alphanumériques

 Code normalisé ASCII utilise 8 bits

a 1 1 1 0 0 0 0 1 97
b 1 1 1 0 0 0 1 0 98
. . . . . . . . .
z 1 1 1 1 1 0 1 0 122
A 0 1 0 0 0 0 0 1 65
+ 0 0 1 0 1 0 1 1 43
, 1 0 1 0 1 1 0 0 44
Bit de poids fort contrôle la parité
Madeleine Bonnet 89
Licence MIA 1ère année Université René Descartes

Vous aimerez peut-être aussi