Upload
nguyendung
View
216
Download
0
Embed Size (px)
Citation preview
Représentation des nombres
• Pendant de nombreux siècles, on a cherché la meilleure façon de représenter les nombres et les grandeurs.
• Peuples primitifs : alignement de bâtonnets • Invention du zéro autorise un système de numération
souple
3
Système décimal Base du système de numération usuel est 10
• 10 doigts = auxiliaire de calcul
• Système décimal autorise la conception de machines à calculer mécaniques (Pascaline en 1645, Babbage & Ada Lovelace 1822)
4
Système décimal Base du système de numération usuel est 10
• 10 doigts = auxiliaire de calcul
• Système décimal autorise la conception de machines à calculer mécaniques (Pascaline en 1645, Babbage & Ada Lovelace 1822)
6
– Existence de systèmes physiques à 2 états d’équilibre (circuits électroniques (mémoires)) impose l’utilisation de systèmes de numération différents : binaire
Système décimal (puissance de 10)
Exemple : 1248 (10)
1248 = 1000 + 200 + 40 + 8
= 1.10 3 + 2.10 2 + 4.10 1 + 8.10 0
• digits utilisés : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
7
Principe identique pour toutes les bases
Système décimal Un nombre entier est représenté de façon unique par une
expression de la forme : N = an.pn + an-1.pn-1 + ... + a0.p0 (0 < ai < p -1) * p : base * a i : digits * notation : an an-1...a0
8
chiffre de poids le plus fort (MSD: most significant digit)
chiffre de poids le plus faible (LSD: lest significant digit)
Système binaire Calculateurs à 2 états d’équilibre
Utilisation de 2 digits : 0 et 1 (bits = binary digits)
9
Exemple : 10010101 (2)
10010101 (2) = 1.2 7 + 1.2 4 + 1.2 2 + 1.2 0
= 128 + 16 + 4 + 1 = 149 (10)
Systèmes octal et hexadécimal • Longueur des nombres en binaire et la confusion qui en résulte
utilisation de bases plus pratiques
Système octal (base 8) Système hexadécimal (base 16)
11
Exemples :
– 225 (8) = 2.8 2 + 2.8 1 + 5.8 0 = 128 + 16 + 5 = 149 (10)
– 95 (16) = 9.16 1 + 5.16 0 = 144 + 5 = 149 (10)
Systèmes octal et hexadécimal • Digits en base 8 : 0, 1, 2, 3, 4, 5, 6, 7 • Digits en base 16 : 0, 1, 2, ... 8, 9, A, B, C, D, E, F
12
Les bases utilisées sont des puissances de deux
Conversion avec système binaire immédiate
Exemple :
2AC (16) = 2.16 2 + 10.16 1 + 12.16 0
= 512 + 160 + 12 = 684 (10)
Systèmes octal et hexadécimal
• FF (16) = (10)
• 57(16) + 1 = (16)= (10)
• 59(16) + 1 = (16)= (10)
• 9F(16) + 1 = (16) = (10)
• 71 (8) = (10)
• 57(8) + 1 = (8) = (10)
13
EXERCICE
255
58 88
A0 160
5A 90
57
60 48
Systèmes octal et hexadécimal
• AE(16) + 5 = (16) = (10)
• 35(8) + 3 = (8) = (10)
14
EXERCICE 2
B3 179 40 32
Changements de base Base p Base 10 : trivial
• 10010101 (2) = 1.2 7 + 1.2 4 + 1.2 2 + 1.2 0 = 128 + 16 + 4 + 1 = 149 (10)
• 225 (8) = 2.8 2 + 2.81+ 5.8 0 = 128 + 16 + 5 = 149 (10)
• 95 (16) = 9.16 1 + 5.16 0 = 144 + 5 = 149 (10)
15
Changements de base Base 10 Base p : divisions successives
16
48 2 24 2 0
12 2 0 6 2 0
3 2 0 1 2 1
0 1
48 (10) = 110000 (2)
Changements de base Base 10 Base p : divisions successives
17
135 8 16 8 7
2 8 0 0 2
135 (10) = 207 (8)
3115 16 194 16 11
12 16 2
0 12
3115 (10) = C2B (16)
Changements de base Base 2 Base 8 Base 16
simples si les bases sont des puissances de deux
18
base 8 = base 2 3
1 0 0 1 0 1 0 1
2 2 5
base 16 = base 2 4
1 0 0 1 0 1 0 1
9 5
• 1 octet (byte en anglais) = 8 bits • Systèmes informatiques travaillent sur des mots de longueur fixe
(8, 16, 32 ou 64) • De manière générale :
Nombre d’octets valeurs décimales 1 octet 0 à 255 ou -128 à +127 (256 codes!)
2 octets 0 à 65535 ou -32768 à +32767 4 octets 0 à 4 294 967 295 ou ....
• Possibilité d’une dépassement d’entier (integer overflow): si mot trop petit pour stocker le résultat de l’opération
Ø En général: conservation des LSD bits, équivaut à modulo %(2n)
Octets - Mots
19
• 1 KB= 1Ko = 210 octets = 1024 octets • 1 MB= 1Mo = 1024 Ko = 220 octets = 1 048 576 octets • 1 GB= 1 Go = 230 octets • La convention des programmeurs, des systèmes d’exploitations,
des mémoires (RAM,Flash)
• Or les fabricants de disques durs (!) et la norme SI: • 1 kB= 1ko = 1000 octets • 1 GB= 1Go = 109 octets (=0.93 * 230 octets) Ø introduction de notations peu usitées pour différencier
• KiB (Kio)= 1 kibi octet = 210 octets pour faire la différence • 1 MiB = 1 mebi octet = 220 octets
Octets - Mots
20
Nombres négatifs (binaire)
(Illustrés ici pour l’exemple sur des mots de 4 bits , mais valable pour n bits)
• Solution immédiate : le MSD pour le 1 bit de signe 0 positif 1 négatif ainsi 0010 (2) = 2 (10)
1010 (2) = -2 (10)
• Problème : l’addition binaire de ces 2 nombres ne donne pas le bon résultat (=1100(2) = - 4(10)) impose un traitement du signe et des circuits différents pour l’addition et la soustraction
• Solution: forme complémentée
21
Nombres négatifs (binaire) : complément à 1 et 2 • Le complément à 1: le nombre opposé est obtenu en inversant
chaque bit du nombre (0 è 1 et vice versa) ainsi 0010 (2) = 2 (10)
1101 (2) = -2 (10)
• Le complément à 2 : le complément à 1 auquel on ajoute 1 ainsi 0010 (2) = 2 (10)
1100 (2) = -2 (10) (= 1101 (2)+1)
• Note: le MSD donne encore le signe du nombre.
22
Nombres négatifs (binaire) : complément à 1 et 2 • Le complément à 1: le nombre opposé est obtenu en inversant
chaque bit du nombre (0 è 1 et vice versa) ainsi 0010 (2) = 2 (10)
1101 (2) = -2 (10)
• Le complément à 2 : le complément à 1 auquel on ajoute 1 ainsi 0010 (2) = 2 (10)
1110 (2) = -2 (10) (= 1101 (2)+1)
• Note: le MSD donne encore le signe du nombre.
23
Nombres négatifs (binaire 4 bits: 16 valeurs)
24
Décimal
+7 +2 +1 +0 -0 -1 -7 -8
Bit de signe
0111 0010 0001 0000 1000 1001 1111
Complément à 1
0111 0010 0001 0000 1111 1110 1000
Complément à 2
0111 0010 0001
0000
1111 1001 1000
• 0 unique en complément à 2 (bit en dépassement tronqué): -0 è 1111(2) +1 = 10000(2)= 0000 (2)
L’exception du plus petit élément: -8 est son propre complément à 2
Nombres négatifs Exemple : 63 -‐ 28 = 35
26
00111111 + 11100100 1 00100011
complément à 2 (bit en dépassement tronqué)
63 00111111 - 28 + 11100011 35 1 00100010
1 00100011
complément à 1 (bit en dépassement à rajouter à l’addition ! )
Nombres négatifs : Exercice
• Calculer le représentation binaire, puis hexadécimale de 13 et -5 avec • la convention du complément à 2; • l’utilisation de mots de 1 octet.
• Calculer alors par une addition binaire la somme des 2 nombres.
Nombres réels • Virgule flottante : 12E8 = 12 x 10 8 • Représentation non unique
- 12.34 = - 1234 x 10 -2
= - 0.001234 x 10 +4 = - 0.1234 x 10 +2
• Codage signe du nombre partie entière partie décimale (la mantisse) signe de l’exposant exposant
28
Nombres réels • Représentation normalisée partie entière • Décalage de l’exposant signe de l’exposant • Norme IEEE 754 (simple précision)
• nombre= (bit de signe) 1.mantisse * 2 exposant-127
• Exemple : -2.5 = - 1.25 * 21 mantisse = .25(10) = 2-2 =.01(2)
29
31 30 23 22 0
- 128(10) .25(10) signe exposant décalé mantisse
1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Représentation des caractères • Systèmes électroniques avec autant d’états stables que de
caractères : IMPOSSIBLE
• Systèmes à 2 états stables codage binaire
• 128 symboles suffisent : A-Z, a-z, 0-9, + symbole mise en forme 7bits
• Code ASCII (ici, représentation décimale du code) :
30
space 32 # 35 ? 63 car. return 13 ... ... ... ...
A 65 a 97 0 48 B 66 b 98 1 49
caractère code caractère code caractère code
Représentation des caractères • Or le mot de base est l’octet è 128 symboles encore libres • Création de jeux de caractères ou tables ascii étendues pour les
codes > 127(10)
• En particulier: le jeu de caractères latins,
31
… … …
ç 251 ê 234 ÷ 247 Ã 195 µ 181 © 169
caractère code caractère code caractère code
Codage de l’information Quelle est la signification de la suite d’octets suivante ?
4A 4F 55 52
33
• Une suite de 4 entiers positifs • Une suite de 4 entiers relatifs (complément à 2) • Une suite de 2 entiers de 16 bits • Une chaine de caractère : «JOUR» en ASCII • Une nombre à virgule flottante, nombre réel sur 32 bits
• Qui codent: • Des données (texte, nombres) • Des niveaux de gris dans une image • Des amplitudes sonores
Codage de l’information • Intérêt de connaître le codage de l’information (alors que le
langage de programmation va nous fournir une abstraction): • Debugger, trouver l’erreur • Hacker/modifier des données ou un programme lui-même
• Exemples: • Chercher et Modifier la valeur du compteur du nombre de vies dans la
sauvegarde d’un jeu (mais c’est souvent crypté de nos jours) • Modifier le code indiquant le codec vidéo utilisé dans un fichier AVI pour
que celui-ci soit correctement reconnu par les lecteurs vidéos • Corriger la fréquence d’un fichier mp3 incorrectement créé ou corrompu.
34
Le fourCC • Un code de 4 caractères : 4 octets indiquant la méthode de
compression utilisée pour la vidéo (Codec: compression-décompression) au début du fichier
• Entre autre: • DX50, DIVX [44 49 56 58]: divx • FMP4 [46 4D 50 34]:alternative au format divx créé par ffmpeg (codecs libre) • H264 • SVQ3: H264 variante pour Quick Time by Sorenson
• Note: avi, mkv, mpg, mov sont des formats pour contenir la vidéo et indépendant du codec utilisé