0% ont trouvé ce document utile (0 vote)
109 vues75 pages

Info I (Partie II)

Le document décrit les notions de base de la représentation des données numériques et textuelles dans les ordinateurs, notamment le codage binaire et les différents systèmes de numérotation comme le binaire, le décimal et l'hexadécimal.

Transféré par

RuSe NOir
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
109 vues75 pages

Info I (Partie II)

Le document décrit les notions de base de la représentation des données numériques et textuelles dans les ordinateurs, notamment le codage binaire et les différents systèmes de numérotation comme le binaire, le décimal et l'hexadécimal.

Transféré par

RuSe NOir
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Informatique I : Introduction à

l’informatique
Semestre 1
Licence SMI/SMA, 2020-2021
Plan du cours

› Qu’est ce que l’informatique?

› L’ordinateur : Les composants matériels

› L’ordinateur : Les composants logiciels et applications

› 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

Le professeur Shadoko avait inventé exactement le même système de comptage que


les humains, la seule différence étant qu'il avait choisi la base 4 (normal, les shadoks
n'avaient que 4 mots).

6
Représentation des données
› Codage binaire
Le langage des ordinateurs : Tout est 0 ou 1

Toutes les informations traitées par l’ordinateur sont en binaire


– Quand on tape sur une touche du clavier, l’ordinateur la transforme en binaire
(suite de zéros et de uns)
– Quand l’ordinateur affiche sur l’écran un résultat, il fait l’opération inverse

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)

Toutes communications à l'intérieur de l'ordinateur sont faites avec des signaux


électriques
– 0: éteint (absence de signal électrique)
– 1: allumé (présence de signal électrique)
9
Représentation des données
› Codage binaire et composants électroniques
On a définit la mémoire comme étant un composant électronique capable de
mémoriser des tensions
On peut assigner deux valeurs à une mémoire :
– 0 lorsque la tension est de 0V
– 1 lorsque la tension est de 5V

On appelle ce type de mémoire un bit (Binary digIT) : unité de stockage élémentaire.

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)

Avec trois bits le nombre total d’états possibles est huit :


000, 001, 010, 011, 100, 101, 110, 111 (23)

Avec n bits on peut avoir 2n états possibles

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

Le système décimal est un système de numération de base 10 (utilise les chiffres de


0 à 9)

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) à ?

(100111)2 = 1*25 + 0*24 + 0*23 + 1*22 + 1*21 + 1*20

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

On peut résumer ces opérations à l'aide d'une table de vérité


– L'addition correspond à l'opérateur booléen XOR (OU-exclusif) et que la retenue
peut elle être calculée à l'aide de l'opérateur ET

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

Le système octale utilise 8 chiffres de 0 à 7: système de base 8

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

En base b, on utilise les nombres 0, 1, ..., b-1

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 :

(an an−1 ...a1a0 )b = an b n + an−1b n−1 + .... + a0b 0


en base b en base 10

On calcule la somme des puissances de b multipliées par le chiffre correspondant à


la puissance
– Exemple avec b=2
(100111)2 = 1*25 + 0*24 + 0*23 + 1*22 + 1*21 + 1*20
29
Représentation des données
› Changement de base : de la base « b » à la base « a »

Règles de conversion de la base b à la base a :


– Passage par le décimal : de la base b au décimal puis du décimal à a

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

– Première méthode de conversion : Passage par la base décimale


› Utiliser la divisions pour passer de binaire vers le décimal et de
décimal vers le hexadécimal/octal

NB : Au besoin, nous pouvons rajouter des 0 à gauche

31
Représentation des données
› Changement de base : de la base « b » à la base « a »
Exemple avec binaire → hexa/octal

– Deuxième méthode de conversion : Directement du binaire vers l’hexadécimal


/octal :
› Par regroupement de bits
– Dans le cas d’un passage à la base 16, on regroupe les bits à partir de la droite par
tranche de quatre bits puis on code chaque regroupement dans la base
hexadécimale
– Dans le cas d’un passage à la base 8 les bits sont regroupés par 3 à partir de la
droite puis on code chaque regroupement dans la base octale

NB: Au besoin, nous pouvons rajouter des 0 à gauche


32
Représentation des données
› Changement de base : de la base « b » à la base « a »
Exemple avec octal  binaire

– Deuxième méthode de conversion : Directement du binaire vers


l’hexadécimal /octal :

1010101010 2 (à convertir en octal)


(on regroupe par 3 à partir de la droite)
001 010 101 010 Donc 1010101010 2 = 12528
1 2 5 2
33
Représentation des données
› Changement de base : de la base « b » à la base « a »
Exemple avec binaire  Hexadécimal

– Deuxième méthode de conversion : Directement du binaire vers


l’hexadécimal /octal :

1010101010 2 (à convertir en hexadécimal)


(on regroupe par 4 à partir de la droite)
0010 1010 1010 Donc 1010101010 2 = 2AA16
2 A A
34
Représentation des données
› Exercice
– Exprimer (194)2 en hexadécimal par les deux méthodes
› Passage par le binaire obligatoire pour la deuxième méthode

– Sans passer par la base décimale, écrire en base binaire :


› (FC)16
› (756)8

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

– Mais on doit aussi pouvoir manipuler des


› Nombres réels
› Nombres négatifs

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

– (101,101)2 = 1 x 22 + 0 x 21 + 1 x 20 + 1 x 2-1 + 0 x 2-2 + 1 x 2-3


= 4 + 1 + 0,5 + 0,125
= 5,625

– (AB,4E) 16 = 10 x 161 + 11 x 160 + 4 x 16-1 + 14 x 16-2


= 160 + 11 + 4 x 0,0625 + 14 x 0,00390625
= 171,3046875

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

– La représentation de11,6046875 en hex (B, 9ACC) avec une précision de 16-4

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.

– Avec N bits on a 2N suites possibles de 0 et 1. Conséquence : les nombres


représentables sont en nombre fini. On ne peut pas tout représenter ni calculer.
Avec 32 bits on est limité à 232 écritures possibles et donc de l’ordre de quelques
milliards de nombres (et le plus grand nombre est de cet ordre de grandeur).
› Donc on ne pourra jamais coder tous les entiers dans une machine.

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).

– Il existe trois façon pour représenter les entiers en machine


› Représentation 1 : bit de signe et valeur absolue
› Représentation 2 : complément à 1
› Représentation 3 : complément à 2

– Pour toutes ces représentations


› On aura toujours un bit utilisé pour préciser le signe du nombre : le bit de poids fort

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

› Exemples si codage sur 4 bits


– (0111)2 = 7 car bit de poids fort à 0
– (1111)2 = -7 car bit de poids fort à 1 49
Représentation des données
› Implémentation des nombres : les entiers
– Représentation 1 : bit de signe et valeur absolue
› Exemples si codage sur 16 bits :
– Nombres positifs : 0XXXXXXXXXXXXXXX
– Nombres négatifs : 1XXXXXXXXXXXXXXX
– On a 15 bits pour coder la valeur absolue du nombre soit 215 = 32768
valeurs possibles
› Pour le positif : de 0 à 32767
› Pour le négatif : de -0 à -32767

› Pour p bits : -(2p-1 - 1) <= N <= 2p-1 – 1


50
Représentation des données
› Implémentation des nombres : les entiers
– Représentation 1 : bit de signe et valeur absolue
› Inconvénients de la représentation :
– On code 2 fois le 0 : 0000 (+0) et 1000 (-0)
– Problème d’addition :
› Exemple si le codage est sur 3 bits :
– 001 + 110 = 111 ?
– 001 + 001 = 010
– 101 + 100 = 101
– 011 + 010 = 101 ?

On souhaiterait avoir une représentation donnant une unique représentation à chaque


valeur, et pour laquelle on puisse calculer la somme bit à bit.
51
Représentation des données
› Implémentation des nombres : les entiers
– Représentation 2 : complément à 1
› Complément logique d'un nombre binaire
– Les 1 deviennent 0 et les 0 deviennent 1
– Complément logique est dit « complément à 1 »
– Codage des nombres signés avec complément logique
› Nb positif : comme pour un entier non signé
› Nb négatif : complément logique de son opposé positif
› Bit de poids fort code le signe : 0 = positif, 1 = négatif
– Exemple, codage sur un octet :
› (00000111) 2 = 7
› Complément à 1 : (11111000) 2 = -7 (et pas 248)
52
Représentation des données
› Implémentation des nombres : les entiers
– Représentation 2 : complément à 1
› Inconvénient :
– toujours 2 façons de coder le 0 :
› 00000000 et le 11111111

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 »

› Codage nombres signés avec complément arithmétique


– Nb positif : comme pour un entier non signé
– Nb négatif : complément arithmétique de son opposé positif
– Bit de poids fort code le signe : 0 = positif, 1 = négatif

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é)

Problème : la partie fractionnelle est fixe et on ne peut pas la modifier.


Impossible de combiner des nombres très différents : Abandon au profit de la
représentation suivante.
68
Représentation des données
› Implémentation des nombres : les réels
– Représentation 2 : virgule flottante (représentation utilisée par les machines)

› Avoir une virgule flottante et une précision limitée


› Ne coder que des chiffres significatifs
› Le nombre est présenté sous forme normalisée pour déterminer la mantisse et exp.
On appelle notation normalisée d'un réel celle où le premier chiffre significatif est
placé immédiatement après la virgule (ou le point décimal). Exemple : 1989 =
0.1989 *104 (ou 0.1989 104 ).
Pour stocker ce nombre en mémoire, il suffit de stocker : l’exposant et la mantisse

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)

Des représentations approchées de π sont : (0.031, 2), (3.142, 0), (0.003, 3) et on


voit qu’elles ne donnent pas la même précision. Pour éviter ce problème on
utilisera une mantisse normalisée c’est à dire qu’elle ne contiendra pas de 0 en
tête (donc le premier bit de la mantisse sera 1).

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)

– 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


› Précision étendue : sur 80 bits

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)

– 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

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)

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

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

Les flottants sont représentés de manière normalisée sur 32 bits.


› Calculer la représentation sur 32 bits du nombre réel 0, 1.
› Même question pour 0, 2 puis 3, 125.

75

Vous aimerez peut-être aussi