CODAGE DES INFORMATIONS
Introduction
COMMUNICATION
Entité 1 Entité 2
Homme Machine
Langage
Langages de programmation Représentations
Circuits
?
électroniques
Introduction
L ’ordinateur est constitué de circuits électroniques (systèmes binaires) donc toute communication se fait en utilisant un code binaire
éléments de communication:
– caractères alphabétiques – nombres
– dessins – musiques – couleurs – sons – etc
Représentation - Interprétation
La machine travaille avec des chaînes de bits (valeur 0 ou 1) qui permettent de représenter les différents
éléments sus-cités.
Pour chaque type de valeurs il faut définir un code ou une représentation.
Avec n bits on peut représenter 2
nvaleurs différentes.
Représentation - Interprétation
Deux processus differents:
Chaînes de caractères :objets concrets
interprétation représentation
Valeurs représentées : notions abstraites
Codage des nombres
Graphismes utilisés
0 1 2 3 4 5 6 7 8 9 A B C D E F binaire
octal
décimal
hexadécimal
Codage des nombres
Représentation par une chaîne de symboles (chiffres):
c
nc
n-1c
n-2... c
1c
0– cn : caractère de poids fort – c0 : caractère de poids faible
Interprétation en base b:
cn x bn + cn-1 x bn-1 + cn-2 x bn-2... c1 x b1 +c0 x b0
Exemples:
100112 = 1x24+0x23+0x22+1x21+1x20 =1910 A316= 10 x16 + 3 = 16310
Passage d ’une base à une autre
1. Base décimale vers une base b
Divisions successives par b jusqu’à un quotient égal à 0 base 10 Æbase 2 Base 10 Æ base 16
26
2
2 2
2 13
6
3
1 2
0 1
1
1 0
0
26
10=11010
2436
16
16 16
27
1
0 13
1 4
436
10=1D4
16Passage d ’une base à une autre
2. Regroupements par paquets Condition:
une base est une puissance de l ’autre
(il peut être nécessaire de compléter le dernier paquet ( de poids fort) par des « 0 »)
0111 1110 0001 base 2
base 16 Paquets de 4 car 16=2
47 2 3 4
111 010 011 100
base 8 base 2 Paquets de 3 car 8=2
37 E 1
Codage des nombres
Pour les parties fractionnaires nous allons mettre en place deux traductions entre binaire et décimal.
Pour traduire en binaire une partie fractionnaire on multiplie par deux la partie fractionnaire et on garde à chaque fois la partie entière ainsi obtenue
(le nombre d'itérations influe sur la précision du calcul) :
0, * 2 = ,
0, * 2 = ,
0, * 2 = ,
0, * 2 = ,
0, * 2 = ,
0,
Codage des nombres
Dans le sens réciproque, on multiplie chaque symbole binaire de la partie entière par une puissance négative de 2 :
0,
*2
-1*2
-2*2
-3*2
-4Codage des nombres
Cette méthode de traduction des parties fractionnaires en binaire peut conduire à des problèmes d'arrondi.
Exemple: 0.777 à coder en binaire sur un octet :
0.777 * 2 = 1.554 0.554 * 2 = 1.108 0.108 * 2 = 0.216 0.216 * 2 = 0.432 0.432 * 2 = 0.864 0.864 * 2 = 1.728 0.728 * 2 = 1.456 0.456 * 2 = 0.912
0.11000110
Codage des nombres
Poids des bits
Dans un nombre binaire, la valeur d'un bit, appelée poids, dépend de la position du bit en partant de la droite.
Le poids d'un bit croît d'une puissance de deux en allant de la droite vers la gauche.
Nombre: 1 1 1 1 1 1 1 1 Poids: 27 = 128 26 = 64 25 = 32 24 = 16 23 = 8 22 = 4 21 = 2 20 = 1
Conversions
Pour convertir un mot binaire en nombre décimal, il suffit de multiplier la valeur de chaque bit par son poids, puis d'additionner tous les résultats.
Exemple: 01012= 23x0 + 22x1 + 21x0 + 20x1 = 8x0 + 4x1 + 2x0 + 1x1 = 5
L'octet
(en anglais byte ou B avec une majuscule dans les notations) est une unité d'information composée de 8 bits.Codage des caractères
Le code ASCII
(American Standard Code for Information Interchange)Norme de codage dont la limitation a été de coder un caractère par octet en utilisant un des bits comme contrôle de parité :
2
7= 128 valeurs possibles chacune étant associée à une valeur entre 0 et 127.
Le code ASCII contient :
–
Les lettres de l'alphabet (minuscules et majuscules) – Les chiffres– La ponctuation
– Des caractères plus informatique de contrôle
Codage des caractères
Les premiers caractères (de 0 à 31) sont les caractères de contrôle pour les transmissions, numérotés dans l'ordre suivant :
CTR@, CTR-A à CTR-Z, CTR[, CTR/, CTR] , CTR CTR, CTR-
32 33 ! 34 " 35 # 36 $ 37 % 38 & 39 ' 40 ( 41 ) 42 * 43 + 44 , 45 - 46 . 47 / 48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7 56 8 57 9 58 : 59 ; 60 < 61 = 62 > 63 ? 64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G 72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O 80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W 88 X 89 Y 90 Z 91 [ 92 \ 93 ] 94 ^ 95 _ 96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g 104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o 112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w 120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 127
Codage des caractères
Afin de moduler le jeu de caractères disponibles, une extension définit les caractères 129 à 255 : le 8-ième bit ne sert plus de contrôle de parité mais de complément d'information.
C'est le code EBCDIC (extended binary coded decimal interchange code) plus connu sous le nom de code ASCII étendu.
Pour les PC cette extension est décomposée en : – Lettres accentuées
– Caractères semi-graphiques – Lettres de l'alphabet grec
– Quelques (rares) symboles mathématiques
Codage des entiers naturels
Codage binaire (pur):
On effectue la traduction en binaire de l'entier. Sur n positions binaires on peut coder des valeurs comprises entre 0 et 2n -1 : – Sur un octet on peut coder des valeurs de 0 à 255
– Sur deux octets on peut coder des valeurs de 0 à 65535 – Etc …
Décimal codé binaire (DCB)
Chaque chiffre décimal est codé sur 4 bits 945610=1001 0100 0101 0110
Code de Gray
Le passage d ’une valeur à la suivante modifie un seul bit:
0: 00 1: 01 2: 11 3: 10
Codage des entiers relatifs
Complément à 2.
– Sur n bits on peut coder les nombres allant de -2n-1 à 2n-1-1
• 1 bit pour le signe
• (n-1) bits pour la valeur – Pour un nombre positif :
• la valeur correspond au code binaire
• le bit de signe est à 0
– Dans le cas d ’un nombre négatif:
• la valeur est obtenue à partir du code binaire
• le bit de signe est à 1
Codage des entiers relatifs
Complément à 2.
Codage d ’un nombre négatif
Valeur Signe
1. Inversion globale: 1→0 et 0 →1
2. Ajout de 1
Codage des entiers relatifs
Complément à 2.
Code d ’un nombre négatif x est égal au code de 2n+x Exemple:
Codage sur 2 bits
code(-1) = code(4-1)
= code(3)
= 11
Codage des entiers relatifs
Complément à 2.
Codage du nombre négatif x
• Parcours du code de –x (positif) des bits de poids faible vers les bits de poids fort jusqu’au premier 1 (inclus)
• Inversion de tous les autres bits de poids fort Exemple:
codage de –26 sur 6 bits code de 26: 011010
100110
Codage des entiers relatifs
Complément à 2.
-2 : 1 1111110 -1 : 1 1111111 0 : 0 0000000 1 : 0 0000001 2 : 0 0000010
– Sur 1 octet (8 bits) on codera :
– Comme plus grand positif 01111111 = 127 – Comme plus petit négatif 10000000 = -128 – Sur 2 octets (1- bits) on codera :
– Comme plus grand positif 011...11 = 32767 – Comme plus petit négatif 100...00 = -32768
Codage des entiers relatifs
Binaire signé:
sur n bits :
– 1 bit de signe (bit de poids fort : n-1)
• 1 pour un nombre négatif
• 0 pour un nombre positif
– (n-1) bits pour coder la valeur absolue Exemples:
-8 : 10001000 8 : 00001000 Problème:
2 codes pour le zéro : 10000000 et 00000000
Codage des entiers relatifs
Complément à 1:
– codage binaire pour un nombre positif
– complémentation de tous les bits pour un nombre négatif Exemple:
8 : 00001000 -8: 11110111
– On a deux codes pour zéro
• 00000000
• 11111111
Codage des entiers relatifs
Codage biaisé:
codage binaire du nombre augmenté de 2n-1-1 (127 pour un octet) Exemple: sur 4 bits
-7: 0000 -4: 0011 0 : 0111 1 : 1000 6 : 1011 8 : 1111
Codage des réels : la norme IEEE-754
Représentation des réels en virgule flottante
Codage sous la forme d'un triplet évalué sur base binaire : signe, valeur ou mantisse et exposant .
Exemple: (en décimal)
5487,643 = (-1)s * 54876430 * 10-4
5487,643 = (-1)s * 00054876 * 10-1
Forme normalisée :
le premier chiffre (de poids fort) doit être différent de 0
mantisse=54876430 exposant=-4
signe=0
mantisse=00054876 exposant=-1
signe=0
Codage des réels : la norme IEEE-754
On admet deux représentations:
• La simple précision, sur 4 octets 23 bits de mantisse
8 bits d'exposant : codage biaisé
Valeur([S,E,M]flt) = (-1)S*2(exposant) *mantisse exposant=E-127
mantisse=1,M22 ….. M0
– précision sur 7 chiffres
– la plus grande valeur absolue: 1038
• La double précision, sur 8 octets 52 bits de mantisse
11 bits d'exposant :
Opérations sur les chaînes de bits 1. Opérations logiques:
– a.Opérations bit à bit:
1011 0010 1011
OR 1011
0010 0010
AND
NOT (1101) = 0010
Opérations sur les chaînes de bits
– b.Opérations de décalage:
• Décalage à droite (DECD):
– Les bits de rang n à 1 sont décalés d'une position vers la droite;
– Le bit de rang n du résultat est mis à 0.
– DECD(1101) = 0110
• Décalage à gauche (DECG):
opération inverse de DECD DECG(1101) = 1010
Opérations sur les chaînes de bits
Utilisation des opérateurs logiques:
• 1 Sélection de champ
• 2 Fusion de champs
xx....x 1001111 xx....x
00....0 1111111 00....0
00....0 1001111 00....0
Champ à sélectionner et
Masque
=
c1 xx...x
ou c2
xx..x
c1 00...0 c2 00..0
ÉS LE CT OI
N =
c1 c2
Opérations sur les chaînes de bits
Opérateurs arithmétiques : Addition (ADD):
Addition de deux nombres de n bits et résultat sur n+1 bits
Xi Yi ri si ri+1
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
L'opération est appliquée sur les bits de rang zéro vers le rang n.
r : bit de retenue (résultat "correct" sur n bits si rn+1=0)
Opérations sur les chaînes de bits
Soustraction (SOUS):
Soustraction de deux nombres de n bits et le résultat est n+1 bits.
Xi yi di si di+1
0 0 0 0 0
0 0 1 1 1
0 1 0 1 1
0 1 1 0 1
1 0 0 1 0
1 0 1 0 0
1 1 0 0 0
1 1 1 1 1
L'opération est appliquée sur les bits de rang zéro vers le rang n.
d : bit de débordement (résultat "correct" sur n bits si d =0)
Opérations sur les chaînes de bits
Multiplication (Mult):
L’opération de la multiplication est réalisée de manière similaire à la base décimale:
Exemple: 1101*0110 1101 x 0110
---
0000 1101 1101
---
1001110