Formation ISN 2017-2018 David Langlois
david.langlois@univ-lorraine. fr
Représentation numérique de l’information numérique et
textuelle
Objectifs du cours
Montrer comment est
représentée/manipulée l’information dans un ordinateur
Etude du codage binaire pour :
Les valeurs numériques
Les caractères
Autres natures de données
Les fichiers sons : voir version étendue de ce support
Les images ? Voir un cours à suivre
Information
Un ordinateur manipule des informations de natures diverses
Valeurs numériques : naturels, réels, irrationnels (?), fractions, complexes...
Données textuelles : texte brut, texte enrichi, texte avec format
Images : dessin libre, figures géométriques, photos
Sons : bruit, musique, parole
Vidéos : suite d’images + bande sonore
Ces informations sont stockées sous des formats très divers
Ex : image BMP, DXF, EPS , GIF, Jpeg, Photo CD, PCX, PICT, PS, TIFF, WPG
Ces informations sont :
Stockées
Manipulées
Calculées
Quels codages de ces informations ?
Ordinateur, c’est quoi ?
Une machine manipulant de l’information, seul
(calcul de trajectoire de météorite), ou en interaction avec l’utilisateur
Quand je dessine à l’ordinateur, l’ordinateur manipule-t- il un dessin ?
Même réponse que pour la question « quand je joue au tennis contre un mur, le mur joue-t-il au tennis du fait qu’il me renvoie la balle ? »
Une machine permettant d’exécuter des programmes
Une machine capable de lire des registres mémoire, d’opérer des calculs sur ces registres et de modifier les valeurs des registres
Un assemblage de plusieurs millions de transistors
Ordinateur, c’est quoi ?
Utilisateur : niveau numérique et symbolique
Ordinateur : niveau purement électrique
Comment est construit le lien entre les
deux niveaux ?
Transistor
Un composant électronique dôté de :
Deux entrées e1 et e2
Une sortie s
e2 est l’alimentation du transistor
Deux états :
Pas de courant en e1 + courant en e2 courant en s
Courant en e1 + courant en e2 pas de courant en s
Quel intérêt ?
Présence/absence de tension : facile à mesurer
Mesure robuste aux interférences
Simule une porte logique NON calcul logique
e2 NON
=1e s
TRANSIST OR
e2 e 1
s ATTENTION
: vision schématiqu
e
6
Logique et binaire
Logique et binaire : une correspondance bijective
Logique : deux valeurs VRAI/FAUX
Binaire : deux valeurs 0/1
Possibilité de représenter les calculs
numériques binaires à l’aide des portes logiques
Binaire = représentation efficace de
l’information de toute nature.
Codage binaire d’un nombre
Codage en base 10 : utilisation de
0,1,2,3,4,5,6,7,8,9 pour coder les valeurs numériques
Codage en base 2 : utilisation de 0,1 pour coder les valeurs numériques
Tout entier en base n peut être codé en binaire.
Exemple
510 = 1012 car 5 = 1*22+0*21+1*20
En général
X10 = bnbn-1bn-2....b2b1b0 si et seulement si :
2
0 n i
i
b
iX
Fabriquer un NON logique (rappel)
e2= NON 1e1=
A
NON A NON
A NON
A
VRAI FAUX FAUX VRAI
NON A
Fabriquer un ET logique
= Brancher plusieurs transistors
e1 = A NON
ET
A B A ET
B VRAI VRAI VRAI VRAI FAUX FAUX FAUX VRAI FAUX FAUX FAUX FAUX
e1 = B NON NON
NON B NON A OU NON B
NON (NON A OU NON B )
= A ET B
Distribution du NON
alimentation = 1
Autres opérations logiques
NON et ET suffisants pour :
A OU B = NON ((NON A) ET (NON B))
A NON-OU B = NON (A OU B)
A OU-EXCLUSIF B = (A ET NON B) OU (NON A ET B)
OU
A B A OU
B VRAI VRAI VRAI VRAI FAUX VRAI FAUX VRAI VRAI FAUX FAUX FAUX
NON-OU
A B A NOR
B
VRAI VRAI FAUX VRAI FAUX FAUX FAUX VRAI FAUX FAUX FAUX VRAI
OU-EXCLUSIF
A B A XOR
B
VRAI VRAI FAUX VRAI FAUX VRAI FAUX VRAI VRAI FAUX FAUX FAUX
Le calcul binaire et le calcul logique
1 bit = 0 ou 1
Opération sur les bits : complémentaire, somme, multiplication
Convention
1 pour VRAI
0 pour FAUX
Et les supports de stockage ?
Disque dur
Surface magnétique constituée de très petits éléments
Deux valeurs +/-
Têtes de lecture/écriture génèrent un champ magnétique capable de changer la polarité
code binaire
Mémoire flash
basée sur des semi-conducteurs à deux états
Passage du courant passage d’un état à l’autre
code binaire
Et les supports de stockage ?
CD-ROM
Lecture laser : la surface réfléchissante renvoie le laser
Vierge = surface opaque = laser non renvoyé
Ecriture = percer un trou minuscule dans la surface opaque = la lumière laser est renvoyée
Deux états : lumière renvoyée ou non codage binaire
CD-RW : couche d’éléments pouvant devenir
transparents/opaques suivant la chaleur imposée binaire
Conclusion : les supports de stockage utilisent le binaire
Mesure de la taille des données
1 octet = 8 bits
1 Ko = 1024 octets (~1000)
1 Mo = 1024 Ko (~1000)
1 Go = 1024 Mo (~1000)
1 To = 1024 Go (~1000)
Conclusion
L’ordinateur gère tout sous forme binaire
Les supports de stockage aussi
Le binaire en plus d’être adapté à la structure même d’un ordinateur a d’autres avantages
Souplesse pour coder les éléments du monde
Opérations courantes (multiplication par 2) simplicité + efficacité en machine
Donc tout doit être représenté sous cette forme
Etudions les codages en binaire de
l’information sous toutes ses formes
Coder les nombres en binaire
Les entiers (rappel)
Codage en base 10 : utilisation de
0,1,2,3,4,5,6,7,8,9 pour coder les valeurs numériques
Codage en base 2 : utilisation de 0,1 pour coder les valeurs numériques
Tout entier en base n peut être codé en binaire.
Exemple
510 = 1012 car 5 = 1*22+0*21+1*20
En général
X10 = bnbn-1bn-2....b2b1b0 si et seulement si :
2
0 n i
i
b
iX
Opérations binaires
Complémentaire à 2 sur n bits
Si A est un nombre binaire, alors le complémentaire c(A) est tel que :
c(A) = 2n-A
Remarque :
c(A) = (2n-1)-A+1
2n-1 en base 2 = que des 1
Donc :
(2n-1)-A : remplacer dans A les 1 par des 0 et les 0 par des 1
c(A) : puis ajouter 1
Calcul facile !
Complémentaire : exemple
Si A = 10310, C(A) = 25610-10310 = 15310
Retrouvons ce résultat avec la méthode de la diapositive précédente
A : code 011001112 (application de la méthode classique)
28-1-A : code 100110002 (on remplace les 1 par 0 et 0 par 1)
28-1-A+1 : code 100110012 (on ajoute 1)
Donc C(A) : code 100110012
Finalement : 100110012 = 128+16+8+1 = 15310
On retombe sur le résultat ! Mais bon on n’est pas surpris puisqu’on a prouvé que ce serait le cas
dans la diapositive précédente.
Opérations binaires
Somme
Base 2 Base
10
R 1 1
1 0 1 5
1 1 1 7
1 1 0 0 12
Multiplication
Base 2 Base 10
1 0 1 5
1 1 1 7
R 1 1
1 0 1
1 0 1
1 0 1
1 0 0 0 1 1 35
Multiplier par 2 = décalage de tous les bits à gauche, dernier bit à 0
Codage
Chaque valeur est codée sur un nombre préfixé de bits
Exemples : 8, 16, 32, 64
Notez les puissances de 2, qui simplifient ensuite les calculs
Note : 8 bits = 1 octet
1 bit = 2 valeurs possibles
2 bits = 4 valeurs possibles
...
n bits = 2n valeurs possibles
Un entier sur 8 bits peut coder 256 valeurs différentes
constante importante : un ordinateur a toujours des limites finies.
Codage
2
nvaleurs, d’accord, mais lesquelles ?
Tout dépend du codage choisi !!
C’EST UN CHOIX
TOUT LE MONDE EST D’ACCORD SUR CE
CHOIX NORMALISATION
Codage des entiers naturels (1/2)
Sur n bits
Valeurs de 0 à 2
n-1
Exemple sur 8 bits
000000002 = 010
000000012 = 110
000000102 = 210
...
111111102 = 25410
111111112 = 25510
Attention aux dépassements !
111111112+000000012 = ???
Réponse 000000002
000000002-000000012 = ???
Réponse 111111112
Codage des entiers naturels (2/2)
Deux représentations possibles (selon les machines, les programmes)
Bit de poids faible à droite, bit de poids fort à gauche
Bit de poids faible à gauche, bit de poids fort à droite
Il faut le savoir et gérer en conséquence
Encodage/décodage des entiers
Quelle méthode appliquer à la main ?
Pour encoder de la base 10 à la base 2 ?
Pour décoder de la base 2 à la base 10 ?
Tester sur des exemples :
2
10= 10
2
3
10= 11
2
15
10= 1111
2De la base 2 vers la base 10
x2 = 10110111
x10 ?
Appliquer la formule :
1*27+0*26+1*25+1*24+0*23+1*22+1*21+1*20
1*128+0*64+1*32+1*16+0*8+1*4+1*2+1*1
128+32+16+4+2+1
183
Mais de tête, difficile de calculer toutes ces puissances de 2
Il vaut mieux énumérer les puissances de 2 en
partant de 1 (20) puis en multipliant par 2 à chaque fois
On lit alors les bits de droite à gauche
De la base 10 vers la base 2 (1/2)
x
10= 183
x
2?
On peut travailler sur la formule :
Donc, on a le bit de poids faible, ensuite, il faut décoder le reste de la division par 2 sans ce bit
2 2
2
2
60 1
0 7 1
0 1 7
0 1 7
0
2
2 j
j j
i
i i
i
i i
i
i
b
ib b b b b b
X
De la base 10 vers la base 2 (2/2)
Exemple avec 183
bit=1, reste à décoder 183/2 = 91
bit=1, reste à décoder 91/2 = 45
bit=1, reste à décoder 45/2 = 22
bit=0, reste à décoder 22/2 = 11
bit=1, reste à décoder 11/2 = 5
bit=1, reste à décoder 5/2 = 2
bit=0, reste à décoder 2/2 = 1
bit=1, reste à décoder 1/2 = 0
Résultat : 10110111
2 2
2
2
60 1
0 7 1
0 1 7
0 1 7
0
2
2 j
j j
i
i i
i
i i
i
i
b
ib b b b b b
X
Exercices
Coder dans l’autre base (sur 8 bits)
4910
12610
110100102
010110112
Les autres bases (souvent utilisées en informatique par les humains)
Base 8 : code avec 0,1,2,3,4,5,6,7
Base 16 : code avec 0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F
Coder 267110 en base 16.
Cet exercice est proposée dans la feuille
d’exercices, et donc corrigé dans la feuille de correction.
Codage des entiers relatifs (sol 1)
Sur n bits
1 bit pour le signe, n-1 bits pour la valeur
(+) Simple
(-) Dans les opérations, le bit de signe doit être géré comme un cas particulier
(-) existence de 2 0 (non conceptuellement satisfaisant), deux cas à gérer
Nombre de valeurs pouvant être codées : 2
n-
1 (et pas 2
n)
Codage des entiers relatifs (sol 2)
Sur n bits
Complément à 2
Si x est positif, représentation habituelle,
Si x est négatif, on code 2n-|x| (le bit de poids fort est 1)
Exemple sur 8 bits
000001012 = 510
100001012 = 13310=256-12310=2810-12310 => codage de -12310
(+) codage de 2n valeurs (un seul 0 00000000)
(+) la somme des relatifs ne subit pas d’exceptions
Codage des entiers relatifs (sol 2)
(-) codage moins évident que sol1
(+) la somme des relatifs ne subit pas d’exception
Base 2 sur 8 bits Base 101 1 1 1 1
0 0 0 0 0 1 0 0 4
1 1 1 1 1 1 0 1 253 = 28-|
x| x = -3
0 0 0 0 0 0 0 1 1
Codage des entiers relatifs (sol3)
En excédent
Représentation d’un intervalle [-i,+j] par les valeurs décalées de i
Exemple :
Intervalle [-127,128] sur 8 bits
[-127,128] contient bien 28=256 valeurs
Décalage de 127
Codage :
-127 codé par 00000000
-126 codé par 00000001
... ...
-1 codé par 01111110
0 codé par 01111111
1 codé par 10000000
.... ...
127 codé par 11111110
128 codé par 11111111
Exercices/solutions
Coder -89
10sur 8 bits en :
Bit de signe
Complément à 2
Excédent à 127
Cet exercice fait partie de la feuille
d’exercices, et est donc corrigé dans la
feuille de correction
Codage binaire des réels (1/3)
Les réels sont considérés en notation scientifique
x = +/- 0,a.10+/- b
x peut être réprésenté par 2 entiers a et b
(pour avoir 0,... il suffit d’adapter la valeur de b)
En binaire :
x = +/- 1,a.2+/- b
le 1 à gauche est toujours là par convention (voir diapo suivante)
On ne représente pas 0,101.2-3 mais 1,01.2-4
a et b sont en binaire
Codage de la partie fractionnaire en puissances négatives de 2
Exemple :
1,01011.22 = 101,011 = 1*22+0*21+1*20+0*2-1+1*2-2+1*2-3
1,01011.22 = 4+1+0,25+0,125 = 5,37510
Codage binaire des réels (2/3)
Norme IEEE 754
Un réel est représenté sur 32 bits :
1 bit pour le signe
8 bits en excédent à 127 pour l’exposant
La mantisse est représentée sous la forme 1,a. 23 bits pour a, le 1 à gauche n’est pas représenté
Exemple pour 5,375
510 = 1012
Soit 1,01...*22
a commence par 01
b = 210; on représente 2+12710 = 100000012
Reste 21 (23 moins les 2 de 01 à droite de la virgule dans 1,01) bits pour représenter 0,375
Principe : si x = 0,b1b2... alors 2x = b1 + 0,b2...
2*0,375 = 0,75 0
2*0,75 = 1,5 1
2*0,5 = 1 1
5,37510 = 1,010112
Sur 32 bits :
010000001(1)01011000000000000000000 (le 1 est sous-entendu)
01000000101011000000000000000000
Codage binaire des réels (3/3)
Attention : seulement 2
32valeurs possibles !
Les valeurs spéciales
Le zéro est représenté par 32 bits à 0.
Infini : exposant rempli de 1 et mantisse à 0
Code erreur (exemple résultat d’une division par 0) : exposant rempli de 1 et mantisse différente de 0
Coder du texte en binaire
Codage binaire des caractères
Problème : coder ‘a’,’b’, ‘c’, ‘A’, ‘B’, ‘?’, ‘.’, ‘€’, ‘©’, ‘’, ‘μ’,
‘ø’, caractères cyrilliques, asiatiques, arabes...
Plusieurs codages : voir la liste dans un traitement de texte
ASCII : (American Standard Code for Information Interchange)
7 bits = 128 valeurs, le 8ième bit utilisé pour vérification (lors des échanges de données)
Représentation de 128 caractères
Pas assez pour toutes les langues
ASCII étendu sur 8 bits (code ISO Latin-1)
8 bits = 256 caractères différents, assez pour langues latines et européennes
Compatibilité avec le code ASCII (partage des 128 premiers caractères)
UNICODE sur 16 bits
16 bits = 65536 caractères différents, assez pour tous les caractères de toutes les langues
Compatible avec le code ASCII.
Problème : consommation mémoire + gestion un peu compliquée des caractères sur 2 octets (voir en TD).
UTF-8 (1/2)
Coder tous les caractères de la norme unicode
Un octet ne suffit plus
Coder sur n octets gourmand en taille
codage sur un nombre variable d’octets
Codage
Représentation binaireUTF-8 Signification
0xxxxxxx U+0000 à U+007F (ASCII)
110xxxxx 10xxxxxx U+0080 à U+07FF 1110xxxx 10xxxxxx
10xxxxxx U+0800 à U+FFFF 11110xxx 10xxxxxx
UTF-8 (2/2)
(+) tous les caractères sont codables
(+) : compatibilité totale avec l’ASCII sur 7 bits
(-) taille variable décodage plus complexe
D’autres avantages/défauts plus techniques