Info I (Partie II)
Info I (Partie II)
l’informatique
Semestre 1
Licence SMI/SMA, 2020-2021
Plan du cours
› Codage de l’information
Représentation des données
› Notions de codage
Exemple 1 :
Nous utilisons le codage chaque jour
– 11, onze, XI
Nous avons interprété XI par le nombre 11. Mais, comment a-t-on pu dire que ce ne
sont pas les lettres X et I ?
3
Représentation des données
› Notions de codage
Exemple 2:
Si on demande le nom correspondant à l’image :
– À un arabophone, il répond : ﺒﯿﺖ
– À un francophone, il répond : maison
– À un anglo-saxon, il répond : house
Mais c’est toujours la même image, seule le nom la désignant change
4
Représentation des données
› Notions de codage
Exemple 3 : les Shadok
Les Shadoks est une série télévisée d'animation française en 208 épisodes de deux à
trois minutes, diffusée entre le 29 avril 1968 et 1973 (trois premières saisons) et à
partir de janvier 2000 (quatrième saison) sur Canal+ et rediffusée sur Cartoon
Network.
Cette série raconte les histoires des Shadoks, une sorte d'oiseaux rondouillards avec
de longues pattes et de petites ailes ridicules,
Les Shadoks possèdent pour tout vocabulaire quatre mots monosyllabiques : « ga,
bu, zo, meu ». Les Shadoks sont excessivement méchants et idiots..
5
Représentation des données
› Notions de codage chez les Shadok
6
Représentation des données
› Codage binaire
Le langage des ordinateurs : Tout est 0 ou 1
Les humains interprètent les mots et les figures, les ordinateurs interprètent les zéros
et les uns. Lorsqu’on lit ‘A’ dans un texte, l’ordinateur lit ‘01000001’ (codage
ASCII)
7
Représentation des données
› Codage binaire
Il est important de distinguer le concept de nombre de sa représentation graphique
› La représentation graphique d’un nombre dépend :
– des symboles utilisés (les chiffres)
– de la base utilisée (le nombre de chiffres disponibles)
› Un même nombre peut être représenté dans plusieurs bases. Par exemple, le
nombre 123 est représenté, en utilisant les chiffres arabes:
– 123 en base 10 (decimal)
– 1111011 en base 2 (binaire)
8
Représentation des données
› Codage binaire et composants électroniques
Interrupteurs
Composantes électroniques laissant passer le
courant principal lorsque la tension sur le fil
de commande est de 5V
Mémoires
Composants électroniques capables de mémoriser
des tensions (0 ou 5V)
10
Représentation des données
› Codage binaire
Si on dispose de deux bits, le nombre total d’états possibles que peuvent prendre ces
deux bits est quatre : 00, 01, 10 ou 11 (22)
11
Représentation des données
› Codage des caractères
› Les caractères alphanumériques en anglais :
– a,b,c,…,y,z = 26 , A,B,C,…,Y,Z = 26, 0,1,…9 = 10
› Les opérations +,-,*,/,<,>…= (=15)
› Ponctuation . , ; : ! ? » ()[]{}_... = 20
› Caractère spéciaux: $ £ & @.... = 10
› Signes invisibles: retour à la ligne, espace... = 5
Au total environ 112
Pour associer à un caractère une suite distincte de 0 et 1 qui le code, nous avons
besoin au minimum de 7 bits, puisque 27 =128
12
Représentation des données
› Codage des caractères
› Certaines langues utilisent en outre d’autres caractères : é, è, à, ç, æ, ë, Ñ, Ã, õ,
β,……
› Il est donc plus raisonnable de conserver une marge de manœuvre, et de prendre
plutôt 8 bits, qui permettent 256 combinaisons différentes.
› Un groupe de huit bits s’appelle un octet (en anglais, byte)
– méfiance avec le byte qui vaut un octet, c'est-à-dire huit bits
› Si on veut coder des nombres de grande taille, des nombres négatifs, des nombres
décimaux, ou d’autre caractères, alors il faut mobiliser plus d’un octet.
– Avec deux octets, on a 256 x 256 = 65 536 possibilités
– Avec trois octets, on passe à 256 x 256 x 256 = 16 777 216
13
Représentation des données
› Codage des caractères
› Quel caractère doit être représenté et par quel état de l’octet?
› Si ce choix était librement laissé à chaque fabricant d’ordinateur, alors :
– Il faudrait des programmes spécifiques pour chaque type d’attribution
– La communication entre deux ordinateurs serait difficilement réalisable
14
Représentation des données
› Codage des caractères
Il existe des standards internationaux de codage à l’exemple de
– ASCII (pour American Standard For Communication and International
Interchange)
– Son rôle est la stipulation de quel état de l’octet correspond à quel signe du
clavier
Caractère Code ASCII
1 00110001
z 01101010
$ 00100100
{ 01111011 15
Représentation des données
› Codage ASCII
16
Représentation des données
› Systèmes de numérotation:
Il existe plusieurs systèmes de numérotation
– Système décimal
– Système binaire
– Système octal
– Système hexadécimal
– Système des couleurs
– ….
17
Représentation des données
› Systèmes de numérotation:
Base d'un système de numération : C'est le regroupement de signes différents
utilisés par ce système pour coder l'information
La base correspond souvent au nombre de signes différents de ce système
– La base dix utilise 10 signes (chiffres de 0 à 9) différents pour représenter un
nombre
– Le système binaire utilise " 2 " signes (0, 1)
– …
Rang d'un chiffre dans un nombre : c'est la place de ce chiffre dans le nombre en
comptant à partir de la droite
– Il définit le "poids" du chiffre dans le nombre
18
Représentation des données
› Systèmes de numérotation: décimal
Rappel : tout nombre décimal peut s’écrire sous forme d’une somme de facteurs de
10n
Exemple :
6523 = 6*103 + 5*102 + 2*101 + 3*100
19
Représentation des données
› Systèmes de numérotation: binaire
Dans le système binaire, on utilise 2 chiffres :
– le système binaire est donc un système de numération de base 2
– Ainsi les nombres binaires se décomposent (en décimal) en une somme de
facteurs de 2n
– Exemple :
Le nombre binaire 100111 correspond (en décimal) à ?
20
Représentation des données
› Systèmes de numérotation: binaire et opérations
L'addition en binaire de deux nombres consiste à effectuer l'addition binaire sur les
bits de même poids de chaque nombre reportant de droite à gauche les retenues
successives
› Exemples d'addition :
– 1011+ 0100 = 1111
– 010 + 111 = 1001
– 0011 + 0111 = 1010
21
Représentation des données
› Systèmes de numérotation: binaire et opérations
A B XOR (A+B) ET
1 1 0 1
1 0 1 0
0 1 1 0
0 0 0 0
22
Représentation des données
› Systèmes de numérotation: octal
178 = 1 * 81 + 7 * 80 = 1510
1178 = ?
23
Représentation des données
› Systèmes de numérotation: hexadécimal
Le système hexadécimal utilise les chiffres 0, 1, ..., 9, A, B, C, D, E, F : système de
base 16
– A, B, C, D, E, F représentent dans le système décimal 10, ..., 15
La base hexadécimale est introduite pour abréger l’écriture des nombres des bases
binaire et octale
1 000 000 000 000 binaire = 10000 octal = 1000 hexadécimal
Le codage hexadécimal est très souvent utilisé quand on a besoin de représenter les
octets individuellement, car dans ce codage, tout octet correspond à seulement deux
signes
– Voir exemple de codage de couleurs (plus loin)
24
Représentation des données
› Systèmes de numérotation: RBG ( Red, Blue and Green)
RGB (Red Green Blue) est un format de codage des couleurs
– se présente comme un nombre hexadécimal à six chiffres : FF06C3 par exemple
– Chaque paire de chiffres est dédiée à une couleur primaire. Sur le même
exemple, cela donne :
› FF pour le rouge ;
› 06 pour le vert ;
› C3 pour le bleu ;
– 000000 : noir
– FFFFFF : blanc
– Combien de couleurs sont possibles? combien d’octets en mémoire?
25
Représentation des données
› Systèmes de numérotation: d’une façon générale
26
Représentation des données
› Changement de base : d’une façon générale
Supposant que vous avez deux bases a et b et deux nombre
– X dans la base b
– Y dans la base a
– Z dans la base décimale
Donner le codage de :
– Z dans la base a et son codage dans la base b
– X et Y dans la base 10
– X dans la base a
– Y dans la base b
27
Représentation des données
› Changement de base : du décimal à la base b
Règles de conversion de la base décimale vers la base b :
– On divise le nombre par b, puis le quotient obtenu par b, et ainsi de suite jusqu’a
obtention d’un quotient nul
– La suite des restes obtenus correspond aux chiffres dans la base b visée
– Exemple avec b=2
› Exprimer en binaire 57
Sens de la lecture
du résultat
28
Représentation des données
› Changement de base : de la base b au décimal
Règles de conversion de la base b au décimal :
30
Représentation des données
› Changement de base : de la base « b » à la base « a »
Exemples avec binaire → Hexadécimal et avec octal → binaire
31
Représentation des données
› Changement de base : de la base « b » à la base « a »
Exemple avec binaire → hexa/octal
35
Représentation des données
› Solution
– Par divisions :
› (194)10 = ( C2)16
– Par regroupement
› De décimal vers le binaire
– (194)10= (11000010)2
› De binaire vers le hexadécimal :
– (11000010 )2 soit 1100 - 0010 c’est à dire 12-2 ce qui donne ( C2)16
36
Représentation des données
› Représentation des nombres
– On a vu jusqu’à maintenant le codage des nombres entiers positifs dans
différentes bases
37
Représentation des données
› Codage des réels
– Codage d'un nombre entier positif N en base B :
N = (an an-1 an-2 ... a1 a0)B
– Pour coder un nombre réel positif N : on rajoute une partie fractionnaire après
une virgule
N = (an an-1 ... a1 a0 , b1 b2 ... bm-1 bm)B
– La valeur en décimal d'un tel nombre est alors donnée par le calcul de
anBn + an-1Bn-1 + ... a1B + a0 + b1B-1 + b2B-2 + ... bm-1B-m+1 +bmB-m
38
Représentation des données
› Codage des réels : exemples
– (123,45)10 = 1 x 102 + 2 x 101 + 3 x 100 + 4 x 10-1 + 5 x 10-2
39
Représentation des données
› Codage des réels : conversion d’un réel décimal en base B
– Pour la partie entière
› Utiliser la méthode de la division entière comme pour les entiers
– Pour la partie fractionnaire
› Multiplier la partie fractionnaire par B
› Noter la partie entière obtenue
› Recommencer cette opération avec la partie fractionnaire du résultat et ainsi de suite
› Arrêter quand
– la partie fractionnaire est nulle
– Ou quand la précision souhaitée est atteinte car on ne peut pas toujours obtenir
une conversion en un nombre fini de chiffres pour la partie fractionnaire
› La partie fractionnaire dans la base B est la concaténation des parties entières
obtenues dans l'ordre de leur calcul 40
Représentation des données
› Codage des réels : exemples de conversion
– Conversion de 12,6875 en binaire
› Conversion de 12 : donne (1100)2
› Conversion de 0,6875
– 0,6875 x 2 = 1,375 = 1 + 0,375
0,375 x 2 = 0,75 = 0 + 0,75
0,75 x 2 = 1,5 = 1 + 0,5
0,5 x 2 = 1 = 1 + 0
› (12,6875)10 = (1100,1011)2
41
Représentation des données
› Codage des réels : exemples de conversion
– Conversion de 171,3046875 en hexadécimal
› Conversion de 171 : donne (AB)16
› Conversion de 0,3046875
› 0,3046875 x 16 = 4,875 = 4 + 0,875
0,875 x 16 = 14,0 = 14 + 0
› (171,3046875)10 = (AB,4E) 16
42
Représentation des données
› Codage des réels : Exercice
– Convertir de 11,6046875 en hexadécimal
43
Représentation des données
› Codage des réels : Exercice
– Convertir de 11,6046875 en hexadécimal
Solution :
– 11 donne en hexa B
– 0, 6046875 * 16 = 9,675 = 9 + 0,675
– 0,675 * 16 = 10,8 = 10 + 0,8
– 0,8 * 16 = 12,8 = 12 + 0,8
44
Représentation des données
› Implémentation des nombres : les entiers
– Les entiers vont être représentés par des emplacement mémoires formés d’octets
(byte) : mot machine
› Le mot machine est l’entité de stockage de base et est formé de 1, 2, 3, 4, 8, . . .
octets selon les machines, c.a.d. 8, 16, 32, 64, . . . bits. La plupart des ordinateurs
actuels utilisent 32 bits.
45
Représentation des données
› Implémentation des nombres : les entiers
– Questions : sachant qu’on dispose de N bits pour représenter un entier.
› comment représenter les entiers signés ?
› comment calculer +, − avec la représentation choisie ?
46
Représentation des données
› Implémentation des nombres : les entiers
– Terminologie : bit de poids fort : celui de la plus grande puissance (le plus à
gauche ), bit de poids faible : celui des unités (le plus à droit).
47
Représentation des données
› Implémentation des nombres : les entiers
– Représentation 1 : bit de signe et valeur absolue
› Principe : considérer que le bit de poids fort code le signe
– 0 = entier positif,
– 1 = entier négatif
– Les autres bits codent le nombre en valeur absolue
› Nécessité de savoir sur combien de bits on code le nombre pour
déterminer quel bit code quoi
48
Représentation des données
› Implémentation des nombres : les entiers
– Représentation 1 : bit de signe et valeur absolue
› Exemples si codage sur 3 bits
– (111)2 = -3 car bit de poids fort à 1
– (000)2 = +0 car bit de poids fort à 0
– (110)2 = -2 car bit de poids fort à 1
– (001)2 = +1 car bit de poids fort à 0
– (101)2 = -1 car bit de poids fort à 1
– (010)2 = +2 car bit de poids fort à 0
– (100)2 = -0 car bit de poids fort à 1
53
Représentation des données
› Implémentation des nombres : les entiers
– Représentation 3 : complément à 2
› Complément arithmétique
– Complément logique du nombre auquel on rajoute la valeur de 1 : Dit «
complément à 2 »
54
Représentation des données
› Implémentation des nombres : les entiers
– Représentation 3 : complément à 2
› Exemples sur 3 bits
– Pour +1: (001)2
– Pour -1 : (111)2
› Complément à 1 de -1 est : (110)2
› Complément à 2 de -1 : (110)2 + (001)2 = (111)2
– -2 = (110)2 et +2 = (010)2
– -3 = (101)2 et +3 = (011)2
› Exemples sur 4 bits :
– 6 = (0110)2
– Complément à 1 : 1001
– Complément à 2 : 1001 + 1 = 1010 d’ou le codage de -6
55
Représentation des données
› Implémentation des nombres : les entiers
– Représentation 3 : complément à 2
› Pour p bits, on code - 2p-1<= N <= 2p-1 – 1 valeurs
– Sur 16 bits : - 32768 <= N <= 32767
– Ce codage est le plus utilisé, c'est le standard de fait pour coder les entiers signés
– Intérêts
› Plus qu'une seule façon de coder le 0
– Grace au « +1 » qui décale l'intervalle de codage des négatifs
› Facilite les additions/soustractions en entier signé
– Propriétés du complément à 2
› comp2 ( N ) + N = 0
› comp2 ( comp2 ( N ) ) = N
56
Représentation des données
› Implémentation des nombres : les entiers
– Représentation 3 : complément à 2
› Décodage de la représentation en complément à 2.
Etant donné une écriture u = aN −1 . . . a1 a0 donnée en complément à 2, pour calculer la
valeur du nombre x représenté par u, on procède ainsi :
– Si le premier bit aN −1 vaut 0, alors le nombre x est positif ou nul et on a
simplement le décodage habituel
– Si le premier bit aN −1 vaut 1, alors le nombre x est strictement négatif et est
obtenu de la façon suivante :
› appliquer l’opération de complément à 1 à u. Notons v la nouvelle écriture
obtenue.
› calculer la valeur en base 2 de la nouvelle écriture v. Notons n cette valeur
› la valeur de x est donnée par x = −(n + 1).
57
Représentation des données
› Implémentation des nombres : les entiers
– Représentation 3 : complément à 2
› Addition à complément 2
Nous avons vu que le calcul de la représentation d’un nombre x en complément à 2
est plus compliqué mais chaque nombre possède une écriture unique et de plus
l’addition peut être exécutée bit à bit :
58
Représentation des données
› Implémentation des nombres : les entiers
– Représentation 3 : complément à 2
› Débordement :
Exemple avec une représentation sur 3 bits on a joute deux entiers.
Que se passe-t-il si on a un résultat plus grand que 3 ou plus petit que −4 ? Par
exemple 3 + 2 = 5 cad 011 + 010 = 101.
Le résultat est aberrant (il est négatif ), il y a eu débordement. Il faut donc s’assurer
que les opérations arithmétiques qu’on effectue restent dans les limites des
représentations.
59
Représentation des données
› Implémentation des nombres : les entiers
– Résumé
› Compléments 2 et 1
– Utilisables dans n'importe quelle base, pas que en binaire
– Avec les mêmes propriétés dans toute base
› Complément à 1 d'un nombre N en base B
– Nombre pour lequel chaque chiffre ax de N est remplacé par le chiffre de
valeur B – 1 – ax
› Exemple en base 8 : comp1(235) = 542
› Complément à 2 = complément à 1 + 1
– Exemple en base 8 : comp2 (235) = 542 + 1 = 543
– Rajoute la valeur 1 quelle que soit la base considérée 60
Représentation des données
› Implémentation des nombres : les entiers
– Exercice 1
Dans tout l’exercice, on considère le codage des entiers sur 4 bits (4 chiffres
binaires).
Dans un premier temps, on ne code que des entiers positifs ou nuls.
› Quelle est le codage binaire (sur 4 bits) de l’entier (12)10 ?
› Quel nombre en base 10 correspond au nombre en base 2 (1010)2 ?
› Quel est le plus grand nombre représentable par ce codage (donnez sa valeur en
base 2 et en base 10) ?
61
Représentation des données
› Implémentation des nombres : les entiers
– Exercice 2
Dans tout l’exercice, on considère le codage des entiers sur 4 bits (4 chiffres
binaires).
Un nombre négatif n est codé par le complément à un de son opposé −n. Rappel
: le complément à un d’un nombre binaire consiste à inverser tous les chiffres de
ce nombre.
› Quel est le codage de l’entier ( −3)10 en utilisant le complément à un ?
› A quel nombre en base 10 correspond (1100)2 .
› A quel nombre correspond (1111)2 ?
› Quel est l’inconvénient de la représentation des entiers négatifs par complément à 1
?.
62
Représentation des données
› Implémentation des nombres : les entiers
– Exercice 3
Dans tout l’exercice, on considère le codage des entiers sur 4 bits (4 chiffres
binaires).
Le complément à deux d’un nombre binaire consiste à ajouter 1 à son
complément à un. Le décalage à gauche d’un nombre binaire est une opération
consistant à décaler tous les chiffres (bits) de ce nombre d’une position vers la
gauche.
› Donner la représentation en complément à 2 de 14 puis -15. Attention codage sur 6
bits
› 14 = (001110)2 et pour -15 = (110001)2
› Donner le décimal correspondant au complément à 2 de (110011)2
63
Représentation des données
› Implémentation des nombres : les entiers
– Exercice 3
Le complément à deux d’un nombre binaire consiste à ajouter 1 à son
complément à un. Le décalage à gauche d’un nombre binaire est une opération
consistant à décaler tous les chiffres (bits) de ce nombre d’une position vers la
gauche.
› Donner la représentation en complément à 2 de 13 puis -14. Attention codage sur 6
bits
› Donner le décimal correspondant au complément à 2 de (110011)2
64
Représentation des données
› Implémentation des nombres : les entiers
– Exercice 3
Dans tout l’exercice, on considère le codage des entiers sur 4 bits (4 chiffres
binaires).
Le complément à deux d’un nombre binaire consiste à ajouter 1 à son
complément à un. Le décalage à gauche d’un nombre binaire est une opération
consistant à décaler tous les chiffres (bits) de ce nombre d’une position vers la
gauche.
› Que réalise l’opération de décalage des nombres binaires sur les entiers en base 10
correspondants ?
› Sur une représentation par complément à 2, quel est le plus grand nombre binaire
représentant un entier positif auquel on peut appliquer cette opération sans risque de
débordement ? Que vaut cet entier en base 10.
65
Représentation des données
› Implémentation des nombres : les réels
– Même problème que pour les entiers mais en plus compliqué :
› Place finie en mémoire pour une infinité de réels, mais en plus on ne sait pas
représenter complètement un réel.
– 165686979878979678568008998 grand mais complètement déterminé.
– 1/3 = 0.3333333... pas de représentation décimale finie,
– √2 = 1.414... pas de représentation rationnelle,
– π = 3.14159.... pas de représentation algébrique
› Seuls les nombres décimaux pas trop grands peuvent se représenter en machine. Par
conséquent toute représentation de nombre réel sera imparfaite. De plus comme pour
les entiers, les nombres sont représentés par des suites de bits donc en base 2. Cela a
des conséquences inattendues : le nombre 0.1 est un décimal en base 10 mais pas en
base 2 ! 66
Représentation des données
› Implémentation des nombres : les réels
– Représentation 1 : virgule fixe (le nombre de chiffres des parties entières et
fractionnaires est fixé)
› Considérons le réel : 2009,283. Sa représentation binaire est
(101 1 1110110 01, 0 1 001 0 0 0 0 1) car :
– Le codage binaire de 2009 est :101 1 1110110 01
– Le codage binaire de 0,283 est : 0 1 001 0 0 0 0 1 :
› 0.283×2=0.566 0
› 0.566×2=1.132 1
› 0.132×2=0.264 0
› 0.264×2=0.528 0
› 0.528×2=1.056 1
› 0.056×2=0.112 0
› 0.112×2=0.224 0
› 0.224×2=0.448 0
› 0.448×2=0.896 0
› 0.896×2=1.792 1 67
Représentation des données
› Implémentation des nombres : les réels
– Représentation 1 : virgule fixe (le nombre de chiffres des parties entières et
fractionnaires est fixé)
69
Représentation des données
› Implémentation des nombres : les réels
– Représentation 2 : virgule flottante (représentation utilisée par les machines)
70
Représentation des données
› Implémentation des nombres : les réels
– Représentation 2 : virgule flottante (représentation utilisée par les machines)
71
Représentation des données
› Implémentation des nombres : les réels
– Représentation 2 : virgule flottante (représentation utilisée par les machines)
72
Représentation des données
› Implémentation des nombres : les réels
– Représentation 2 : virgule flottante (représentation utilisée par les machines)
73
Représentation des données
› Implémentation des nombres : les réels
– Exercice 1
La représentation d’un nombre flottant sur 32 bits est telle que : le bit de signe est 0,
l’exposant est 10001001, la mantisse est 00010110000000000000000.
› Expliquer ce que cela signifie.
– 0 = positif
– 10001001 = (137)10 = exposant
– 00010110000000000000000 = la mantisse
› Donner la valeur du nombre flottant en base 10.
– 1 10101101 10010110000000000000000
– S=1
– E =10101101 = 173
– M = - 1001011
74
Représentation des données
› Implémentation des nombres : les réels
– Exercice 1
75