Généralités sur le Système Informatique 2019
SYSTEME DE CODAGE DE L’INFORMATION
1. LE LANGAGE DE COMMUNICATION DU MICROPROCESSEUR : LE BINAIRE
Le binaire est une connaissance à maitriser dans le domaine de l'électronique.
En effet, il est largement présent dans la plupart des composants, C'est d'autant
plus utilisé dans les composants numériques puisque ceux-ci enregistrent les
données en binaire. C’est le cas de l’ordinateur. Le langage de communication du
microprocesseur est le binaire.
1.1. Introduction au binaire
Dans le monde des humains, nous avons que 10 chiffres (allant de 0 à 9), c'est ce qui
s'appelle le codage décimal. Cependant, dans le monde électrique, il n'y a que 2
chiffres (le 0 et le 1). Et cela, est appelé le codage binaire.
Si il n'y a que deux chiffres en électronique, c'est parce qu'il n'y a que 2 états
électriques possible. En effet, dans les systèmes électriques soit il y a un signal
(valeur1) ou alors il n'y en a pas (valeur 0).
Si on devait prendre une analogie du binaire, on pourrait dire d'un verre d'eau: qu'il est
plein (valeur binaire 1) ou qu'il est vide (valeur binaire 0). Etc.
Le bit est alors un chiffre binaire, c'est-à-dire 0 ou 1. Il est donc aussi une unité de
mesure en informatique, celle désignant l a q ua ntité élémenta ire d 'i nfor ma tion
repré senté e pa r un chiffre du systè me b in a ire .
1.2. Notion d’OCTET (o)
L’octet (Byte) est une unité de mesure en informatique mesurant la quantité de
données. Un octet est lui-même composé de 8 bits, soit 8 chiffres binaires. Les multiples
d’octet sont :
Réalisé par M. Gabriel KOUNASSO Page 8
Généralités sur le Système Informatique 2019
Multiples d’octets
tels que définis par IEC 60027-2
Préfixe SI Préfixe binaire
Nom Symbole Valeur Nom Symbole Valeur
kilooctet ko 103 kibioctet Kio 210
mégaoctet Mo 106 mébioctet Mio 220
gigaoctet Go 109 gibioctet Gio 230
téraoctet To 1012 tébioctet Tio 240
pétaoctet Po 1015 pébioctet Pio 250
exaoctet Eo 1018 exbioctet Eio 260
zettaoctet Zo 1021 zébioctet Zio 270
yottaoctet Yo 1024 yobioctet Yio 280
Multiples normalisés
La normalisation des préfixes binaires de 1998 par la Commission électrotechnique
internationale spécifie les préfixes suivants pour représenter les puissances de 2 :
• kibi pour « kilo binaire » ;
• mébi pour « méga binaire » ;
• gibi pour « giga binaire » ;
• tébi pour « Téra binaire » ;
Et ainsi de suite.
Réalisé par M. Gabriel KOUNASSO Page 9
Généralités sur le Système Informatique 2019
Concernant les multiples de l'octet, cela donne :
1 kibioctet (Kio) = 210 octets = 1 024 octets
1 mébioctet (Mio) = 220 octets = 1 024 Kio = 1 048 576 octets
1 gibioctet (Gio) = 230 octets = 1 024 Mio = 1 073 741 824 octets
1 tébioctet (Tio) = 240 octets = 1 024 Gio = 1 099 511 627 776 octets
1 pébioctet (Pio) = 250 octets = 1 024 Tio = 1 125 899 906 842 624 octets
1 exbioctet (Eio) = 260 octets = 1 024 Pio = 1 152 921 504 606 846 976 octets
1 zébioctet (Zio) = 270 octets = 1 024 Eio = 1 180 591 620 717 411 303 424 octets
1 yobioctet (Yio) = 280 octets = 1 024 Zio = 1 208 925 819 614 629 174 706 176 octets
Les préfixes Kilo, Méga, Giga, Téra, etc., correspondent aux mêmes multiplicateurs
que dans tous les autres domaines : des puissances de 10. Appliqué à l'informatique,
cela donne :
1 kilooctet (ko) = 103 octets = 1 000 octets
1 mégaoctet (Mo) = 106 octets = 1 000 ko = 1 000 000 octets
1 gigaoctet (Go) = 109 octets = 1 000 Mo = 1 000 000 000 octets
1 téraoctet (To) = 1012 octets = 1 000 Go = 1 000 000 000 000 octets
1 pétaoctet (Po) = 1015 octets = 1 000 To = 1 000 000 000 000 000 octets
Multiples traditionnels
De manière erronée selon le SI (Système International), avant la normalisation de
1998, et encore de nos jours dans l'usage courant, on utilise les unités dérivées que
sont le kilo-octet, le méga-octet, le giga-octet, etc. pour représenter les valeurs
suivantes en puissance de 2 :
Réalisé par M. Gabriel KOUNASSO Page 10
Généralités sur le Système Informatique 2019
1 kilo-octet (ko) = 210 octets = 1 024 o = 1 024 octets, soit 2 à la puissance 10
1 méga-octet (Mo) = 220 octets = 1 024 Ko = 1 048 576 octets
1 giga-octet (Go) = 230 octets = 1 024 Mo = 1 073 741 824 octets
1 téra-octet (To) = 240 octets = 1 024 Go = 1 099 511 627 776 octets
1 péta-octet (Po) = 250 octets = 1 024 To = 1 125 899 906 842 624 octets
1 exa-octet (Eo) = 260 octets = 1 024 Po = 1 152 921 504 606 846 976 octets
1 zetta-octet (Zo) = 270 octets = 1 024 Eo = 1 180 591 620 717 411 303 424 octets
1 yotta-octet (Yo) = 280 octets = 1 024 Zo = 1 208 925 819 614 629 174 706 176 octets
1.3. Conversion des nombres entiers positifs ou nuls
1.3.1. Système de numération
Les systèmes de numération binaire et hexadécimale sont très utilisés dans les domaines
de l'électronique et de l'informatique.
Principe de base
La base est le nombre qui sert à définir un système de numération. La base du système
décimal est dix alors que celle du système octal est huit. Quelle que soit la base
numérique employée, elle suit la relation suivante :
Exemple : base 10
1986 = (1 x 103) + (9 x 102) + (8 x 101) + (6 x 100)
Dans le système décimal (de base b=10), les nombres (0, 1, 2, 3,..,9=10-1 (b-1)) sont
appelés chiffres. Tout nombre entier positif peut être représenté par la forme suivante :
n n-1 1 0
N =a n 10 +a n-1 10 + …+ a 1 10 +a0 10
= ∑ai10i
Réalisé par M. Gabriel KOUNASSO Page 11
Généralités sur le Système Informatique 2019
Exemple :
N=20361(Notation Condensée de N) N =2.104+ 0.103+ 3.102+ 6.101+ 1.100.
D’une façon générale, quelle que soit la base (B>1), les nombres 0,1, 2,…, B-2, B-1
sont appelés les chiffres.
Les systèmes les plus utilisés sont :
Le système Sa base b Ses chiffres
Décimal 10 0; 1; 2; …; 9
Binaire Octal 2 0; 1
Hexadécimal 8 0; 1; 2; …; 7
16 0; 1; 2; …; 9; A ; B ; C ; D ; E ; F
Réalisé par M. Gabriel KOUNASSO Page 12
Généralités sur le Système Informatique 2019
Les correspondances entre ces systèmes :
Décimal Binaire Octal Hexadécimal
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
1.3.2. Conversion d’une base à l’autre
Binaire (b = 2 ) D é c i m a l (b = 1 0)
Un nombre N s’écrit en binaire a n a n-1 …a 1 a0 où ai = (0 ou 1), on veut transformer
sa notation en décimal; il suffit d’écrire sous forme de série géométrique de raison 2 :
n n-1 1 0
N =a n 2 + a n-12 +…+ a 1 2 +a 0 2
Réalisé par M. Gabriel KOUNASSO Page 13
Généralités sur le Système Informatique 2019
Et puis faire l’addition; le résultat obtenu est en décimal.
Bin a ire (b = 2 ) O c tal (b=8 )
Prenons l’exemple suivant: N =(111010100011101) 2
On subdivise cette suite des 0 et 1 en d e s ensembles de 3 bits, chaque ensemble de
3 bits représente un chiffre dans la base 8:
Donc N=(111010100011101) 2 =(72435) 8
Binaire ( b = 2) Hexadécimal (b=16 )
Prenons le même exemple traité précédemment : N =(111010100011101)2
De même, on subdivise cette suite des 0 et des 1 en des ensembles de 4 bits, car
chaque ensemble de 4 bits représente un chiffre dans la base 16.
NB: On peut ajout er des 0 à ga uche du no mbre bina ire p our q u’il soit
d ivisib le en g ro up es d e 3 o u 4 chiffres : N = 1 1 0 1 00 1 1 0 1 0 0 0 0 1 1 01 0
L’avantage des systèmes Octal et Hexadécimal est d’éviter d’écrire de longues chaînes
de 0 et de 1.
Déc i mal ( b = 1 0) Binaire ( b = 2 )
Exe m p l e : (25) 10 = (?)2 = (25)10= (?)2=an2 n+an-12 n-1 +…+a121 +a020
Donc comment peut-on trouver les ai ? Pour cela on devra faire la succession des
divisions sur 2 le reste est ai qui est forcément 0 ou 1 puisque la division est sur 2
Le résultat de la conversion est la lecture dans le sens du bas vers le haut des restes de
la division successive par 2 du nombre à convertir.
Oc t a l ( b = 8 ) o u H e x a d é c i m a l ( b = 1 6 ) B ina ire ( b= 2 )
La conversion d’un nombre Octal (Hexadécimal) en binaire est très simple, il suffit de
donner l’équivalence de chaque chiffre sur 3 bits pour l’Octal et sur 4 bits pour
l’Hexadécimal.
Réalisé par M. Gabriel KOUNASSO Page 14
Généralités sur le Système Informatique 2019
Exemples:
(702) 8 = (?) 2 sachant que :(7) 8 =(111) 2 et (0) 8 = (000) 2 et:(2) 8 = (010) 2
Ce qui donne (702) 8 = (111000010) 2
(9AE1) 16 = (?) 2 Sachant que : ( 9) 16 = (1001) 2 ; ( A) 16 = (1010) 2 ; ( E) 16 = (1110) 2
et (1) 16 = (0001) 2 ce qui donne (9AE1) 16 = (1001 1010 1110 0001)2
Réalisé par M. Gabriel KOUNASSO Page 15
Généralités sur le Système Informatique 2019
Les données non-numériques
Avec un bit, on code deux possibilités: 0,1 ; avec deux bits, on code 4 = 2² possibilités :
3
00, 01, 10, 11; avec trois bits, on code 8 = 2 possibilités : 000, 001, 010, 011, 100, 101,
110 et 111. Donc avec n bits, on code 2n possibilités.
Alors avec 7 bits, on peut coder 27=128 possibilités, ce qui est suffisant pour coder
tous les caractères: A, B, …, Z, a, b,.., z, «,»,@,…
Les données non numériques sont construites d’un ensemble de caractères, chaque
caractère correspond à un code en décimal, ce code est appelé le code ASCII de ce
caractère.
A- Le jeu de caractères ASCII :
Tous les ordinateurs n’utilisent pas le même jeu de caractères, mais l’ASCII (American
Standard Code for Information Interchange) est le plus courant. Ce jeu de caractères
est un code à 7 bits. Sur les 128 possibilités, 33 sont réservés pour les fonctions de«
contrôle», tel le retour chariot et le saut de ligne.
La Tabl e A S C I I
+0 +1 +2 +3 +4 +5 +6 +7
0 NUL SOH STX ETX EOT ENQ ACK BEL
8 BS HT LF VT FF CR SO SI
16 DLE DC1 DC2 DC3 DC4 NAK SYN ETB
24 CAN EM SUB ESC FS GS RS US
32 ! “ # $ % & ‘
40 ( ) * + , - . /
48 0 1 2 3 4 5 6 7
56 8 9 : ; < = > ?
64 @ A B C D E F G
72 H I J K L M N O
80 P Q R S T U V W
88 X Y Z [ \ ] ^ _
96 ‘ a b c d e f g
104 h i j k l m n o
112 p q r s t u v w
120 x y z { | } ~ DEL
Pour trouver le code ASCII d’un caractère, on fait l’addition des deux nombres qu’ils lui
correspondent.
Réalisé par M. Gabriel KOUNASSO Page 16
Généralités sur le Système Informatique 2019
Exemples :
Le code ASCII de A est 64+1 = 65
Le code ASCII de B est 64+2 = 66
Le code ASCII de\ est 88+4 = 92
Le code ASCII de ~ est 120+6 = 126
Exercice d’application :
Trouvez la conversion de la chaîne de caractère Ali en binaire?
Solution :
Le Code ASCII de A est (65) 10 = (1000001)2
Le Code ASCII de l est (108) 10 = (1101100)2
Le Code ASCII de i est (105) 10 = (1101001)2
Alors le code en binaire de Ali est 100000111011001101001
Exercice
1. Trouvez la conversion des chaines de caractères suivantes : BENIN ; TOGO ;
MALI ; BURKINA FASO ; CONGO ; MADAGASCAR ; COTE D’IVOIRE ; AFRIQUE.
2. Trouvez la conversion des chaines suivantes : EPAC ; GBH ; ABM ; GIMR ; GEn ;
PSA ; MBH ; GIT ; GTA ; FIFA.
Réalisé par M. Gabriel KOUNASSO Page 17
Nombres signés
Nous avons jusqu’à présent parlé de nombres entiers naturels. Ils ne peuvent par nature
qu’être positifs ou nuls. Envisageons maintenant les nombres entiers relatifs ou autrement dit,
munis d’un signe ‘+ ‘ ou ‘-‘
En décimal,
1, 2, 3 etc. sont des nombres positifs. Ils sont supérieurs à 0 ( n >0 )
-1, -2, -3 etc. sont des nombres négatifs. Ils sont inférieurs à 0 ( n < 0 )
De même en binaire,
1, 10, 11, 100, 101 etc. sont des nombres binaires positifs,
-1, -10, -11, -100, -101 etc. sont des nombres binaires négatifs.
Le problème pour la codification de ces nombre est que les circuits électroniques digitaux ne
peuvent enregistrer que des 0 ou des 1 mais pas de signes + ou -. Le seul moyen est alors de
convenir, quand un nombre est susceptible d’être négatif, de lui réserver un bit pour indiquer
le signe. Reste à déterminer quel bit qui dans un nombre codé en binaire conviendrait le
mieux pour symboliser le signe et quelle valeur de ce bit (0 ou 1) conviendrait le mieux pour
représenter le signe "plus" ou le signe "moins".
Observons d’abord le fait que les nombres codés en machine ont une dimension fixe :
Sur papier, les nombres ont des dimensions variables :
L’addition de deux nombres de 2 chiffres donne un nombre de 2 ou 3 chiffres.
La multiplication de deux nombres de 2 chiffres donne des nombres de 3 ou 4 chiffres.
En machine par contre, les nombres ne sont pas extensibles. Ils ont des
dimensions fixes. C’est exactement ce que nous avons avec certain compteurs.
Dans une voiture par exemple, le compteur kilométrique s’il ne possède que 6
chiffres ne pourra indiquer plus de 999.999 km.
Il en va de même, dans les ordinateurs les nombres (binaires) ont eux aussi
des dimensions fixes de 1, 2, 4 ou 8 octets.
Revenons à l’exemple de la voiture et imaginez un compteur kilométrique qui compte les km
en marche avant et qui les décompte en marche arrière. Que pourrait-on lire sur un compteur
d’une voiture neuve (compteur initialement à 000.000) si elle parcourt 1 km en marche
arrière ? Le compteur décompte 1 km et affiche donc … 999.999 km ! Ce code correspond
parfaitement à la valeur –1 puisqu’on obtient 0 si on lui ajoute à nouveau 1.
x+1=0 ⇒ x = -1 ⇒ dans ce cas ci 999.999 équivaut à -1
On exploite cette caractéristique étrange qui est due au fait que ce nombre à une dimension
finie (6 chiffres décimaux)
De même, quel serait le code d’un nombre de 8 bits pour représenter la valeur –1 ?
Le code 1111 11112 (= FF16) convient puisque, si on ajoute 1 à ce nombre, on obtient
0000 00002 (ou 0016 ), le bit de report déborde à gauche, il sort de l’espace qui est réservé
au nombre et est donc ignoré.
Le bit le plus à gauche du mot binaire est celui qui va représenter le signe. Signe négatif si ce
bit vaut 1, signe positif quand ce bit vaut 0 .Le tableau de la page suivante montre ce que cela
donne avec des nombres de 8 bits.
Si on admet que le nombre peut représenter des Nombres de 8 bits
Lu en
valeurs négatives, on parle de nombres Lu en Lu en binaire décimal
"signés". hexadécimal signé
7F 0111 1111 +127
Comme pour les nombres "non signés", on peut 7E 0111 1110 +126
représenter 2 8 = 256 codes avec 8 bits
… … …
mais ici le bit de gauche est le signe
10 0001 0000 +16
1 = signe moins
0F 0000 1111 +15
0 = signe plus
OE 0000 1110 +14
Il y a donc moyen de représenter OD 0000 1101 +13
OC 0000 1100 +12
→ 128 codes avec le bit de signe à 1 0B 0000 1011 +11
ce sont 128 nombres négatifs 0A 0000 1010 +10
( de –1 à – 128) 09 0000 1001 +9
→ 128 codes avec le bit de signe à 0 08 0000 1000 +8
le nombre 0 et 127 nombres positifs …
( de 1 à +127) 03 0000 0011 +3
02 0000 0010 +2
01 0000 0001 +1
00 0000 0000 +0
FF 1111 1111 -1
FE 1111 1110 -2
FD 1111 1101 -3
FC 1111 1100 -4
FB 1111 1011 -5
FA 1111 1010 -6
F9 1111 1001 -7
… … …
86 1000 0110 -122
85 1000 0101 -123
84 1000 0100 -124
83 1000 0011 -125
82 1000 0010 -126
81 1000 0001 -127
80 1000 0000 -128
Comment calculer les codes des nombres négatifs ?
Le calcul se fait en deux étapes :
1° Calcul du complément à 1 = Remplacer tous les 0 par des 1 et tous les 1 par des 0.
2° Calcul du complément à 2 = Ajouter 1 au complément à 1
Exemple : comment écrire –4 en binaire ou en hexadécimal ?
+4 = 0000 0100
complément à 1 = 1111 1011
+1
complément à 2 = 1111 1100 = FC = - 4
Cas particuliers :
- Le complément à 2 de 0 est encore 0
- Le complément à 2 de 80H est aussi 80H ! Les nombres négatifs et positifs ne sont pas
répartis symétriquement. Avec un byte la valeur minimum est –128 contre +127 pour
la valeur positive.
NB. Le complément à 1 est aussi appelé "complément logique" ou "complément restreint"
De même, certains désignent le complément à 2 par l’expression "complément arithmétique".
Analogie en décimal
25 Existe-t-il un complément arithmétique de 17
tel que 25 + (Complément de 17) = 25 - 17 ?
-17 Oui, à condition de décréter que comme dans une machine les nombres ont une
08 taille fixe au-delà de laquelle les reports sont ignorés.
Puisque deux chiffres suffisent pour écrire 25, 17 et 08 nous limitons la taille de ces nombres
à 2 caractères.
La question devient : Quel nombre faut-il ajouter à 25 pour que la réponse se terminer par les
chiffres 08 ?
Ce nombre est 83. En effet 25 + 83 = 108 mais on ignore le 1 à gauche puisque nous avons
décidé de donner une taille fixe de deux chiffres pour les nombres de cet exemple.
83 est donc dans ce cas le complément arithmétique de 17.
Comment trouver ce complément arithmétique en base 10 ?
La méthode ressemble fort au calcul du complément à 1 comme en binaire suivi de l’addition
d’une unité. Ici, en décimal, le complément restreint sera un complément à 9.
Complément à 9 : 99
-17
82
Complément arithmétique : 82 +1 = 83
99 – 17 + 1 = 100 – 17 = 83
La valeur du bit de signe
Le bit de signe est le bit le plus significatif du code ( MSB Most Significant Bit), celui qui
est le plus à gauche. Dans le cas d’un nombre de n bits numérotés de 0 à n-1, c’est le
bit n-1 . Bien souvent on se contente de constater que ce bit est à 1 pour en conclure que
le nombre considéré est négatif. La valeur absolue de ce nombre est alors déterminée en
calculant le complément arithmétique de son code.
Une autre manière d’envisager la chose serait de considérer que le bit n-1 a,
contrairement aux autres bits, une valeur négative : - 2 n-1
Exemple :
Si un byte est considéré comme un code signé le bit 7 quand il est à 1 vaut -128.
Si le byte est considéré comme non signé, le poids du bit 7 est simplement 27 = 128.
Ainsi -123 = -128 + 5 = 80H + 5 = 85H
Plus généralement :
Pour les nombres non signés nous calculions la valeur du nombre comme suit :
N = bn-1 2n-1 + ... + bi 2i + ... + b2 22 + b1 2 + b0
i =n-1
= ∑ bi 2i
i =0
Dans le cas des nombres signés la valeur sera
N= - bn-1 2n-1 + bn-2 2n-2 + ... + bi 2i + ... + b2 22 + b1 2 + b0
i =n-2
= -2 n-1 + ∑ bi 2i
i =0
Extension de la taille d'un nombre signé
Pour étendre la taille d’un nombre non signé, on ajoute des 0 à sa gauche.
Pour étendre la taille d’un nombre signé, ajoute sur la gauche des bits identiques au bit de
signe.
Exemples :
-4 codé sur un byte = FC16 sur deux bytes ce code devient FFFC16
= 1111 11002 = 1111 1111 1111 11002
+4 en un byte = 0416 sur deux bytes = 000416
= 0000 01002 = 0000 0000 0000 01002
Extension du
Bit de signe bit de signe
EXERCICES
1. Déterminez les valeurs des compléments logiques et arithmétiques des codes binaires
suivants :
Complément à 1 Complément à 2
1100 1001
0000 1111
0111 0011 0001 0000
2. Calculer les compléments à 1 et à 2 pour les nombres suivants exprimés sous forme
hexadécimale. Faites le calcul en binaire puis notez la réponse en hexa.
AA(16)
FF(16)
1248(16)
3. Que vaut le code C0(16)
a) s’il s’agit d’un nombre non signé ?
b) s’il s’agit d’un nombre signé ?
4. Les codes suivants ont une taille de 16 bits, ils sont signés et donnés en hexadécimal.
Calculez leurs valeurs et donnez la réponse en décimal.
FFFF
8000
7FFF
00FF
5. Quelles sont les valeurs minimum et maximum que peut prendre un nombre entier
signé codé sur 4 octets ?
6. Comment écrire -512 en binaire ? Combien faut-il de bytes au minimum pour encoder
cette valeur ?
7. Quel est le plus petit nombre entier négatif qui puisse être traité dans les registres d’un
Pentium 64 bits ?
8. La valeur -192 peut-elle être codée sur un byte ? justifiez votre réponse.
9. Comment écrire -150 en binaire et en hexadécimal ?
10. Que vaut 8001(16) selon que ce code de 2 octets est signé ou non signé ?