Vous êtes sur la page 1sur 37

1ère Classe Préparatoire

Module: Informatique 1

CHAPITRE 2
REPRÉSENTATION DES NOMBRES

1
REPRÉSENTATION DES NOMBRES

PLAN DU CHAPITRE
6. Codification des nombres entiers
1. Introduction 1. Entiers naturels
2. Changements de bases 2. Entiers relatifs
3. Représentation des nombres 7. Opération des nombres binaires
a) Représentation des nombres entiers
signés
b) Représentation des nombres
fractionnaires a) Addition et soustraction
4. Passage de base i. Complément à 1
a) Passage d’une base quelconque à la ii. Complément à 2
base 10 b) Multiplication
b) Passage de la base 10 vers une base
quelconque c) Division
c) Passage de la base entre les bases 2, 8. Codification des nombres réels en
8 et 16 virgule flottante
5. Opérations arithmétiques 2
1) INTRODUCTION SYSTÈME BINAIRE ?

Système binaire ?

Les informations traitées par un ordinateur peuvent être de différents


types (texte, nombres, etc.) mais elles sont toujours représentées et
manipulées par l’ordinateur sous forme binaire

▪ Toute information sera traitée comme une suite de 0 et de 1.

▪ L’unité d’information est le chiffre binaire (0 ou 1), que l’on appelle bit (pour binary
digit ou chiffre binaire).

3
1) INTRODUCTION SYSTÈME BINAIRE ?

Codage de l’information ?

Le codage d’une information consiste à établir une correspondance entre la


représentation externe (habituelle) de l’information (le caractère A ou le
nombre 36 par exemple), et sa représentation interne dans la machine, qui est
une suite de bits

▪ On utilise la représentation binaire car elle est simple, facile à réaliser techniquement
à l’aide de bistables (système à deux états réalisés à l’aide de transistors).

▪ Les opérations arithmétiques de base (addition, multiplication etc.) sont faciles à


exprimer en base 2.

▪ Origine de l'utilisation du binaire : absence ou présence de courant électrique (0 ou 1)


comme base de codage.
4
2) CHANGEMENTS DE BASES
Représentation d’un nombre ?

Habituellement, on utilise la base 10 pour représenter les nombres, c’est à


dire que l’on écrit à l’aide de 10 symboles distincts, les chiffres. En base b, on
utilise b chiffres

▪ Notons ai la suite des chiffres utilisés pour écrire un nombre, a0 est le chiffre des
unités.

➢ En décimal, b = 10, ai € {0,1, 2, 3, 4, 5, 6, 7, 8, 9}


➢ En binaire, b = 2, ai € {0, 1} => 2 chiffres binaires, ou bits

➢ En hexadécimal, b = 16, ai € {0,1, 2, 3, 4, 5, 6, 7, 8, 9,A,B,C,D,E, F}


(on utilise les 6 premières lettres comme des chiffres)
5
2) CHANGEMENTS DE BASES

6
3) REPRÉSENTATION DES NOMBRES
3.1. REPRÉSENTATION DES NOMBRES ENTIERS

3.1. Représentation des nombres entiers

▪ En base 10, on écrit par exemple 1996 pour représenter le nombre:

1996 = 1*103 + 9*102 + 9*101 + 6*100

▪ Dans le cas général, en base b, le nombre représenté par une suite de chiffres
anan-1.....a1a0 est donné par:

➢ a0 est le chiffre de poids faible, et an le chiffre de poids fort

7
3) REPRÉSENTATION DES NOMBRES
3.1. REPRÉSENTATION DES NOMBRES ENTIERS

3.1. Représentation des nombres entiers

Exemple en base 2 :

(101)2 = 1*22 + 0* 21 + 1* 20 = 4 + 0 + 1 = 5

➢ La notation ( )b indique que le nombre est écrit en base b.

8
3) REPRÉSENTATION DES NOMBRES
3.2. REPRÉSENTATION DES NOMBRES FRACTIONNAIRES

3.2. Représentation des nombres fractionnaires

▪ Les nombres fractionnaires sont ceux qui comportent des chiffres après la virgule. Dans
le système décimal, on écrit par exemple :

12,346 = 1*101 + 2*100 + 3*10-1 + 4*10-2 + 6*10-3

▪ En général, en base b, on écrit :

9
4) PASSAGE DE BASE
4.1. PASSAGE D’UNE BASE QUELCONQUE À LA BASE 10

4.1. Passage d’une base quelconque à la base 10

▪ Il suffit d’écrire le nombre comme ci-dessus et d’effectuer les opérations en décimal:

Exemple en hexadécimal :

(AB)16 = 10*161 + 11*160 = 160 + 11 = (171)10

(en base 16, A représente 10, B = 11, et F = 15).

10
4) PASSAGE DE BASE
4.2. PASSAGE DE LA BASE 10 VERS UNE BASE QUELCONQUE

4.2. Passage de la base 10 vers une base quelconque


a) Nombres entiers
▪ On procède par divisions successives. On divise le nombre par la base, puis le
quotient obtenu par la base, et ainsi de suite jusqu’à obtention d’un quotient nul.

➢ La suite des restes obtenus correspond aux chiffres dans la base visée, a0a1....an

Exemple en en binaire :

11
4) PASSAGE DE BASE
4.2. PASSAGE DE LA BASE 10 VERS UNE BASE QUELCONQUE

4.2. Passage de la base 10 vers une base quelconque


a) Nombres entiers
Exemple 2: (7172)10 en hexadécimal

12
4) PASSAGE DE BASE
4.2. PASSAGE DE LA BASE 10 VERS UNE BASE QUELCONQUE

4.2. Passage de la base 10 vers une base quelconque


b) Nombres fractionnaires
▪ On multiplie la partie fractionnaire par la base en répétant l’opération sur la partie
fractionnaire du produit jusqu’à ce qu’elle soit nulle (ou que la précision voulue soit
atteinte).
➢ Pour la partie entière, on procède par divisions comme pour un entier

Exemple 1: conversion de 12,6875 en binaire


• Partie entière : Conversion de 12 : donne (1100)2
• Partie fractionnaire : 0,6875

13
4) PASSAGE DE BASE
4.2. PASSAGE DE LA BASE 10 VERS UNE BASE QUELCONQUE

4.2. Passage de la base 10 vers une base quelconque


b) Nombres fractionnaires

Exemple 2: conversion de 171,3046875 en hexadécimal


• Conversion de 171 : donne (AB)16
• Partie fractionnaire : 0,3046875

14
4) PASSAGE DE BASE
4.3. PASSAGE DE BASE ENTRE LES BASES 2, 8 ET 16

4.3. Passage de base entre les bases 2, 8 et 16

▪ Ces bases correspondent à des puissances de 2 (21, 23 et 24), d’où des passages de
l’une à l’autre très simples.

▪ Les bases 8 et 16 sont pour cela très utilisées en informatique,


➢ elles permettent de représenter rapidement et de manière compacte des
configurations binaires.

❖ Chaque chiffre en base 16 (24) représente un paquet de 4 bits consécutifs.


Par exemple : (10011011)2 = (1001 1011)2 = (9B)16

❖ De même, chaque chiffre octal représente 3 bits.


Exemple (011010101001)2 = (011 010 101 001)2 = (3251)8
15
4) OPÉRATIONS ARITHMÉTIQUES
4.3. PASSAGE DE BASE ENTRE LES BASES 2, 8 ET 16

▪ Les opérations arithmétiques s’effectuent en base quelconque b avec les mêmes


méthodes qu’en base 10.

▪ Une retenue ou un report apparaît lorsque l’on atteint ou dépasse la valeur b de la


base.
11
Exemples : 5 101 -
3 + 011
8 = 1000

16
6) CODIFICATION DES NOMBRES ENTIERS

Pourquoi ?

La représentation (ou codification) des nombres est nécessaire afin de les


stocker et manipuler par un ordinateur.

▪ Le principal problème est la limitation de la taille du codage:


➢ un nombre mathématique peut prendre des valeurs arbitrairement grandes, tandis
que le codage dans l’ordinateur doit s’effectuer sur un nombre de bits fixé.

17
6) CODIFICATION DES NOMBRES ENTIERS

6.1. Entiers naturels

▪ Les entiers naturels (positifs ou nuls) sont codés sur un nombre d’octets fixé (un octet
est un groupe de 8 bits). On rencontre habituellement des codages sur 1, 2 ou 4 octets,
plus rarement sur 64 bits (8 octets, par exemple sur les processeurs DEC Alpha).

▪ Un codage sur n bits permet de représenter tous les nombres naturels compris entre
0 et 2n - 1.

Par exemple sur 1 octet, on pourra coder les nombres de 0 à 255 = 28 - 1.

▪ On représente le nombre en base 2 et on range les bits dans les cellules binaires
correspondant à leur poids binaire, de la droite vers la gauche.
➢ Si nécessaire, on complète à gauche par des zéros (bits de poids faible).
18
6) CODIFICATION DES NOMBRES ENTIERS

6.1. Entiers relatifs

▪ Il faut ici coder le signe du nombre:

▪ On représente le nombre en base 2 et on range les bits comme pour les entiers
naturels.

➢ Cependant, la cellule de poids doit contenir 0 ou 1 : on utilise donc n - 1 bits.

▪ On peut représenter sur n bits les entiers compris entre - (2n-1 - 1) et 2n-1 - 1

❖ Entiers positifs ou nuls


• La cellule de poids fort est toujours à 0.
• Le plus grand entier positif représentable sur n bits en relatif est donc 2n-1- 1.

19
6) CODIFICATION DES NOMBRES ENTIERS

6.1. Entiers relatifs

❖ Entiers négatif
• 2 façons de représenter:

a. Complément à 1 (noté Cà1)


• On prend la représentation de la partie entière et on inverse tous les bits
Ex : 0100 ↔ 4 1011 ↔ - 4
0011 ↔ 3 1100 ↔ -3

➢ Inconvénients: 2 représentations pour 0 : (sur 4 bits par exemple) 0000 et 1111

20
6) CODIFICATION DES NOMBRES ENTIERS
6.1. Entiers relatifs

b. Complément à 2 (noté Cà2)

• Idem que Cà1, mais on ajoute 1 après (Complément à 2 = (Complément à 1) + 1)


Ex : 0110 ↔ 6 1010 ↔ -6
0011↔ 3 1101 ↔ -3

➢ Plus qu'une seule façon de coder le 0 : Représentation de 0 (sur 4 bits) : 0000 =>
complément à 1 : 1111 on ajoute 1 : 10000

• Grâce au « +1 » qui décale l'intervalle de codage des négatifs.


• C’est le plus utilisé, c'est le standard de fait pour coder les entiers signés.
• On peut représenter sur n bits les entiers compris entre -(2n-1) et 2n-1 - 1
21
7) OPÉRATION DES NOMBRES BINAIRES SIGNÉS

7.1 Addition et soustraction


a) Complément à 1:

• On ajoute les deux nombres binaires et on ajoute la retenue éventuelle.

Exemple (Codage sur 4 bits)

22
7) OPÉRATION DES NOMBRES BINAIRES SIGNÉS

7.1 Addition et soustraction


b) Complément à 2:

• On ajoute les deux nombres et on néglige la retenue finale éventuelle.

Exemple (Codage sur 4 bits)

23
7) OPÉRATION DES NOMBRES BINAIRES SIGNÉS

7.1 Addition et soustraction


Dépassement de capacité :

• La somme de 2 nombres (de n bits) ne peut être codée sur n bits (la somme est parfois
trop grande ou trop petite)

• En complément à 2, Un dépassement de capacité (Débordement ou overflow ) se


produit lorsque les deux opérandes ont le même signe et le résultat a un signe différent
des opérandes.

Le résultat est bien-sur incorrect


24
7) OPÉRATION DES NOMBRES BINAIRES SIGNÉS

7.2 Multiplication

✓ Les deux nombres doivent être représentés dans une forme sans complément
(i.e valeur absolue)
✓ On effectue la multiplication
✓ On décide du signe du résultat :
• Les opérandes sont de mêmes signes : le résultat est positif
• Les signes des opérandes sont différents : le résultat est négatif

➢ Si le signe du résultat est négatif, il faut le représenter avec son complément à 2

25
7) OPÉRATION DES NOMBRES BINAIRES SIGNÉS

7.3 Division

➢ La division consiste en des soustractions successives

26
8) CODIFICATION DES NOMBRES RÉELS EN VIRGULE FLOTTANTE

Principes ?

• Ne coder que des chiffres significatifs


• N = +/- M x BE
o N = nombre codé
o M = mantisse : nombre de X chiffres de la base B
o E = exposant : nombre de Y chiffres de la base B
o +/- = codage du signe : positif ou négatif

• Le nombre est présenté sous forme normalisée pour déterminer la mantisse et exp.
• Dans la convention la plus courante, un nombre binaire normalisé différent de zéro a la
forme: ±1.bbb...bx2±e
• Comme, sous cette forme, le bit le plus signifiant est toujours égal à 1, il n'est pas
nécessaire de le coder: il est implicite.
27
8) CODIFICATION DES NOMBRES RÉELS EN VIRGULE FLOTTANTE

Exemple:

• Supposons la représentation suivante:

Problème1 : Sous cette forme, il est impossible de coder le nombre zéro ?

Solution: le nombre zéro est représenté avec tous les bits à 0.

➢ Avec la représentation de l'exemple précédent, nous avons: 0.0 = 0 000 0000

Remarque : Par extension, tous les nombres avec exposant égal à 0 sont dits non
normalisés: le bit à gauche du point décimal est égal à 0 et non pas à 1,
comme c'est le cas pour les autres nombres, normalisés
28
8) CODIFICATION DES NOMBRES RÉELS EN VIRGULE FLOTTANTE

Exemple:

• Supposons la représentation suivante:

Problème2 : comment représenter le nombre 1.0 ?


comment représenter les exposants négatifs ?

Solution: Comme un exposant est un nombre entier signé, une solution serait de le
représenter en complément à 2.

➢ Ce n'est toutefois pas la solution choisie….

29
8) CODIFICATION DES NOMBRES RÉELS EN VIRGULE FLOTTANTE

Solution finale => Codification biaisée !

En général, l'exposant est représenté de façon biaisée: une constante, le biais, doit
être soustraite de la valeur dans le champ pour obtenir la vraie valeur de l'exposant

➢ champ exposant = exposant + biais

▪ Typiquement, la valeur du biais est 2k-1-1, où k est le nombre de bits du champ de


l'exposant

▪ Toutefois, les deux valeurs extrêmes du champ exposant sont réservées pour des cas
particuliers:
➢ 00…00: pour les nombres non normalisés
➢ 11..11: pour infini (positif et négatif) et NaN (not a number)
30
8) CODIFICATION DES NOMBRES RÉELS EN VIRGULE FLOTTANTE

Exemple 1:

• Si k=4, la valeur du biais sera 7, l'exposant pourra avoir une des valeurs suivantes :

31
8) CODIFICATION DES NOMBRES RÉELS EN VIRGULE FLOTTANTE

Exemple 2:

• Supposons la représentation suivante :

• Convertir les nombres décimaux suivant en virgule flottante:


➢ + 3.125
➢ +0
➢ +1

• Donner la valeur décimale du chiffre suivant :

32
8) CODIFICATION DES NOMBRES RÉELS EN VIRGULE FLOTTANTE

Exemple 2:

• Supposons la représentation suivante :

33
8) CODIFICATION DES NOMBRES RÉELS EN VIRGULE FLOTTANTE

➢ Standard IEEE 754 : codage binaire de réels en virgule flottante !

▪ Précision simple : 32 bits


✓ 1 bit de signe,
✓ 8 bits exposant,
✓ 23 bits mantisse

▪ Précision double : 64 bits


✓ 1 bit de signe,
✓ 11 bits exposant,
✓ 52 bits mantisse

34
8) CODIFICATION DES NOMBRES RÉELS EN VIRGULE FLOTTANTE

➢ Addition et multiplication des réels en virgule flottante !

▪ Avant de faire l’addition, il faut que les deux exposants soient égaux. Puis renormaliser
si nécessaire.

▪ Pour Multiplier on additionne les exposants et on multiplie les mantisses (0,bbb...b), puis
le résultat est arrondi et normalisé.

35
8) CODIFICATION DES NOMBRES RÉELS EN VIRGULE FLOTTANTE

➢ Addition et multiplication des réels en virgule flottante !

▪ Exemple:

➢ (1,11 x 21) + (1,01 x 22) = ?

➢ (1,01 x 21) x (0,100 x 23) = ?

36
8) CODIFICATION DES NOMBRES RÉELS EN VIRGULE FLOTTANTE

➢ Addition et multiplication des réels en virgule flottante !

▪ Exemple:

➢ (1,11 x 21) + (1,01 x 22) = (1,11 x 21) + (10,1 x 21)


= (100,01 x 21)

➢ (1,01 x 21) x (0,100 x 23) = (0,10100 x 21+3)


= (1010)

37

Vous aimerez peut-être aussi