Représentation numérique de l’information
Ilaria Zappatore
[Link]@[Link]
Les entiers
1, -1, 2, -2, …
Problème : comment faire comprendre à la machine qu’un
nombre est positif ou négatif ?
1
Les entiers
1, -1, 2, -2, …
Problème : comment faire comprendre à la machine qu’un
nombre est positif ou négatif ?
Sur n bits, L’ordinateur dispose d’un espace ni pour stocker les nombres
1
fi
Les entiers
1, -1, 2, -2, …
Problème : comment faire comprendre à la machine qu’un
nombre est positif ou négatif ?
Sur n bits, nous pouvons utiliser un bit (le bit de poids fort) pour le signe :
- 1 : pour le signe négatif
- 0 : pour le signe positif
Les n − 1 bits restantes la valeur absolue du nombre
1
Représentation signe, valeur absolue
Sur n bits, nous pouvons utiliser un bit (le bit de poids fort) pour le signe :
- 1 : pour le signe négatif
- 0 : pour le signe positif
Les n − 1 bits restantes la valeur absolue du nombre
Ecrire −7 sur n = 5 bits
• −→1
11011
• | − 7 | = 7 = (1011)2
2
Représentation signe, valeur absolue
Sur n bits, nous pouvons utiliser un bit (le bit de poids fort) pour le signe :
- 1 : pour le signe négatif
- 0 : pour le signe positif
Les n − 1 bits restantes la valeur absolue du nombre
Sur n = 4 bits 1 0 1 1
3
Représentation signe, valeur absolue
Sur n bits, nous pouvons utiliser un bit (le bit de poids fort) pour le signe :
- 1 : pour le signe négatif
- 0 : pour le signe positif
Les n − 1 bits restantes la valeur absolue du nombre
Sur n = 4 bits 1 0 1 1
- (011)2 = 3
-3
3
Représentation signe, valeur absolue
Sur n bits, nous pouvons utiliser un bit (le bit de poids fort) pour le signe :
- 1 : pour le signe négatif
- 0 : pour le signe positif
Les n − 1 bits restantes la valeur absolue du nombre
Problèmes ???
3
Représentation signe, valeur absolue
Sur n bits, nous pouvons utiliser un bit (le bit de poids fort) pour le signe :
- 1 : pour le signe négatif
- 0 : pour le signe positif
Les n − 1 bits restantes la valeur absolue du nombre
Problèmes :
- Deux représentations possibles pour +0 et -0
- Opérations ?
3
Complément à deux
Nous voulons représenter l’entier p sur n bits,
- Si p est positif on le code sur n bits normalement,
n
- Si p est négatif on code 2 − | p | en binaire sur n bits
Ecrire −4 sur n = 3 bits
4
Complément à deux
Nous voulons représenter l’entier p sur n bits,
- Si p est positif on le code sur n bits normalement,
n
- Si p est négatif on code 2 − | p | en binaire sur n bits
Ecrire −4 sur n = 3 bits
3
• 2 − | − 4| = 8 − 4 = 4 100
4
Complément à deux
Entier Complément à deux Sur n = 3 bits,
nous pouvons représenter les entiers
+0 000 entre -4 et 3
+1 001
+2 010
+3 011
-4 100 Sur n bits,
n−1 n−1
-3 101 −2 ≤p≤2 −1
-2 110
-1 111
5
Astuce: calculer le complément à deux
Nous pouvons facilement calculer le complément à deux d’un nombre sur n bits
Exemple : écrire -7 sur n = 4 bits
1. Ecrire le valeur absolue en binaire 0 1 1 1
2. Complémenter bit à bit 1 0 0 0
3. Ajouter 1 en binaire 1 0 0 1
6
Astuce: calculer le complément à deux
Nous pouvons facilement calculer le complément à deux d’un nombre sur n bits
Exemple : écrire -102 sur 16 bits
7
Astuce: calculer le complément à deux
Nous pouvons facilement calculer le complément à deux d’un nombre sur n bits
Exemple : écrire -102 sur 16 bits
0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0
1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1
1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 0
7
Représentation des entiers
Selon le langage de programmation, les variables contenant des nombres entiers
stockent ceux-ci sur un nombre xe de bits.
En langage C
- Le type int représente un entier sur 16 ou 32 bits (selon l’architecture du processeur)
- Le type unsigned int représente un entier positif sur 16 ou 32 bits (selon le processeur)
- Le type short int représente un entier sur 16 bits
- Le type long int représente un entier sur 32 bits
8
fi
Représentation des entiers
Selon le langage de programmation, les variables contenant des nombres entiers
stockent ceux-ci sur un nombre xe de bits.
En langage C
- Le type int représente un entier sur 16 ou 32 bits (selon l’architecture du processeur)
- Le type unsigned int représente un entier positif sur 16 ou 32 bits (selon le processeur)
- Le type short int représente un entier sur 16 bits
- Le type long int représente un entier sur 32 bits
En python ?
- Le type int est un type à représentation in nie. Le langage modi e le nombre de bits
nécessaires au stockage à la volée.
8
fi
fi
fi
Les réels
Comment représenter les nombres réels en machine ?
9
Les réels
Comment représenter les nombres réels en machine ?
Un nombre réel est constitué d’une partie entière et une partie fractionnaire
- Virgule xe = position de la virgule est xe
- Virgule ottante = position de la virgule change
9
fi
fl
fi
Représentation en virgule xe
Comment représenter les nombres réels en machine ?
Un nombre réel est constitué d’une partie entière et une partie fractionnaire
- Virgule xe = position de la virgule est xe
partie entière sur n=4 bits , partie fractionnaire sur m=3 bits
5,25
0 1 0 1 0 1 0 0
10
fi
fi
fi
Représentation en virgule ottante
Chaque nombre réel peut s’écrire de la façon suivante :
Exposant
n=±m×b e
Signe Mantisse Base
2
134,123 = + 1,34123 × 10
2
−(1101,101)2 = − (1,101101)2 × 2
11
fl
Représentation en virgule ottante
Norme IEEE 754 pour la représentation des nombres réels en virgule ottante
Institute of Electrical and Electronics Engineers
12
fl
fl
Représentation en virgule ottante
Norme IEEE 754 pour la représentation des nombres réels en virgule ottante
- Simple précision 32 bits
- Double précision 64 bits
En langage C, le compilateur gcc
- Le type float : simple précision
- Le type double : double précision
En python ?
- Le type float : double précision
12
fl
fl
Norme IEEE 754 simple précision
Mantisse tronquée
Signe Exposant biasé
24 bits
1 bit 8 bits
s e+127
(−1) × 1.m × 2 bias
Exemple : + 85.125
1. Convertir 85.125 en binaire
13
Norme IEEE 754 simple précision
Mantisse tronquée
Signe Exposant biasé
24 bits
1 bit 8 bits
s e+127
(−1) × 1.m × 2 bias
Exemple : + 85.125
1. Convertir 85.125 en binaire (1010101.001)2
13
Norme IEEE 754 simple précision
Mantisse tronquée
Signe Exposant biasé
24 bits
1 bit 8 bits
s e+127
(−1) × 1.m × 2 bias
Exemple : + 85.125
s e
2. Ecrire n=(1010101.001)2 sous la forme (−1) × 1.m × 2
13
Norme IEEE 754 simple précision
Mantisse tronquée
Signe Exposant biasé
24 bits
1 bit 8 bits
s e+127
(−1) × 1.m × 2 bias
Exemple : + 85.125
s e 0 6
2. Ecrire n=(1010101.001)2 sous la forme (−1) × 1.m × 2 (−1) × 1.010101001 × 2
13
Norme IEEE 754 simple précision
Mantisse tronquée
Signe Exposant biasé
24 bits
1 bit 8 bits
s e+127
(−1) × 1.m × 2 bias
Exemple : + 85.125
0 6
3. Récupérer de (−1) × 1.010101001 × 2 le signe s=0
13
Norme IEEE 754 simple précision
Mantisse tronquée
Signe Exposant biasé
24 bits
1 bit 8 bits
s e+127
(−1) × 1.m × 2 bias
Exemple : + 85.125
0 6
4. Récupérer de (−1) × 1.010101001 × 2 l’exposant biasé e + 127 = 6 + 127 = 133
13
Norme IEEE 754 simple précision
Mantisse tronquée
Signe Exposant biasé
24 bits
1 bit 8 bits
s e+127
(−1) × 1.m × 2 bias
Exemple : + 85.125
5. Convertir l’exposant biasé en binaire e + 127 = 133
13
Norme IEEE 754 simple précision
0 1 0 0 0 0 1 0 1
Mantisse tronquée
Signe Exposant biasé
24 bits
1 bit 8 bits
s e+127
(−1) × 1.m × 2 bias
Exemple : + 85.125
5. Convertir l’exposant biasé en binaire e + 127 = 133 = (10000101)2
13
Norme IEEE 754 simple précision
0 1 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mantisse tronquée
Signe Exposant biasé
24 bits
1 bit 8 bits
s e+127
(−1) × 1.m × 2 bias
Exemple : + 85.125
0 6
6. Récupérer de (−1) × 1.010101001 × 2 la mantisse tronquée
13
Norme IEEE 754 simple précision
Mantisse tronquée
Signe Exposant biasé
24 bits
1 bit 8 bits
s e+127
(−1) × 1.m × 2 bias
Exemple : - 0.875
14
Norme IEEE 754 double précision
Signe Exposant biasé Mantisse tronquée
1 bit 11 bits 53 bits
s e+1023 bias
(−1) × 1.m × 2
15
Norme IEEE 754 simple précision
Mantisse tronquée
Signe Exposant biasé
24 bits
1 bit 8 bits
s e+127
(−1) × 1.m × 2
Les nombres avec une mantisse 1.m Normalisés ∈ [1,2[
16
Norme IEEE 754 : cas particuliers
Mantisse tronquée
Signe Exposant biasé
24 bits
1 bit 8 bits
s e+127
(−1) × 1.m × 2
Si l’exposant biasé est égal à 0 Nombres Dénormalisés ∈ [0,1[
Machine représente la mantisse sous la forme 0.m
Ce système permet de représenter le 0
17
Norme IEEE 754 : cas particuliers simple précision
Mantisse tronquée
Signe Exposant biasé
24 bits
1 bit 8 bits
1. Exposant biasé = 0, mantisse = 0 +0, -0
2. Exposant biasé = 0, mantisse ≠ 0 Nombres dénormalisés
3. Exposant biasé = 255, mantisse = 0 + inf, - inf
4. Exposant biasé = 255, mantisse ≠ 0 NaN
18
CONCLUSION
- La représentation des entiers, complément à deux
- Les réels, virgule xe, virgule ottante
- La norme IEEE 754
19
fi
fl