Vous êtes sur la page 1sur 118

Architecture

des ordinateurs

Le codage des informations

Samir BARA
samirbara00@gmail.com
Planning de cours

LES ÉLÉMENTS DE COURS DE CE MODULE Volume horaire

Chapitre n°1 : Circuits logiques : 44 heures

I. La représentation de l’information dans une machine 12 heures

II. Méthodes de simplification de fonctions logiques 4 heures

III. Logique combinatoire 16 heures

IV. Logique séquentielle 12 heures

Chapitre n°2 : Architecture de l’ordinateur : 44 heures


Le codage des informations

Objectifs de ce module
En suivant ce module vous allez :

◼ Découvrir l’arithmétique dans les bases 2, 8 et 16.


◼ Comprendre comment sont codés les réels selon le format
IEEE 754 et comment sont réalisées les opérations dans ce
format.
◼ Connaître la manière dont sont codés les caractères dans les
ordinateurs grâce aux tables ASCII et UNICODE.
Introduction
Le codage et le décodage de l’information

Codage Décodage

0, 1,2,3…9 0, 1,2,3…9
100011101100011
101101110000000
Données et instructions 011110
Résultats
informations binaires
4
Introduction (2)

Dans un système informatique, une information


est codée sous forme d’une suite de 0 et
1.Cette forme s’appelle les nombres binaires.

❑Le bit (binary digit) est la plus petite unité de


l’information binaire qui prend la valeur 0 ou 1.
5
Le codage des informations

Plan du module
Voici les parties que nous allons aborder :

◼ Le codage des entiers et


l’arithmétique binaire.
◼ Les codages hexadécimal,
octal et DCB.
◼ Le codage des réels.
◼ Le codage des textes.
Le codage des informations

Le codage des entiers


et l’arithmétique binaire
Le codage des entiers et l’arithmétique binaire

Plan de la partie
Voici les chapitres que nous allons aborder :
◼ Introduction
◼ Binaire positif vers décimal positif.
◼ Décimal positif vers binaire positif.
◼ Addition des binaires positifs.
◼ Soustraction des binaires positifs.
◼ Codage des nombres binaires négatifs.
◼ Soustraction des binaires positifs (bis).
◼ Multiplication des binaires.
◼ Division des binaires.
Le codage des entiers et l’arithmétique binaire

Introduction
Représentation de l’information dans la machine :

◼ Représentation des nombres négatifs


◼ Signe / valeur absolue
◼ Complément à 1
◼ Complément à 2
◼ Représentation des nombres réels
◼ Virgule fixe
◼ Virgule flottante

◼ Le codage BCD et UNICODE


◼ Représentation des caractères
Le codage des entiers et l’arithmétique binaire

Introduction
Information

Instructions Données

Caractère Numérique

Entiers

Non signés

Signés

Réels
Le codage des entiers et l’arithmétique binaire

Introduction
Codage binaire
◼ Informations de plusieurs types
◼ texte, nombre etc..
◼ Traitée comme suite de 0 et de 1.
◼ Unité d’information est le bit.
◼ Codage de l’information
◼ Correspondance entre représentation externe et
interne.
◼ Pourquoi ?
◼ Systèmes à deux états : transistors.
Le codage des entiers et l’arithmétique binaire

Introduction
Définition de bases

◼ La base habituelle est la base 10.


◼ En base b, on utilise b chiffres
◼ X=anan-1…a1a0
◼ b=10 ; ai {0,1,2,3,4,5,6,7,8,9}
◼ b=2 ; ai {0,1}
◼ b=16 ; ai {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}
Le codage des entiers et l’arithmétique binaire

Binaire positif vers décimal positif


Méthode de conversion – Le principe
◼ Un nombre binaire s’écrit avec deux chiffres (1 et 0).
◼ Il est possible de déterminer la valeur décimale associée
grâce à un tableau de correspondance.

Nombre binaire 1 0 1 0 1
    

Coefficients 24
16 283 242 221 210

Nombre décimal 16 + 0 + 4 + 0 + 1 = 21
Le codage des entiers et l’arithmétique binaire

Binaire positif vers décimal positif


Méthode de conversion – D’un point de vue mathématique
◼ En base 10, si un nombre N s’écrit xyz10, cela signifie que :
◼ N = x.100 + y.10 + z.1
◼ N = x.102 + y.101 + z.100

◼ Même principe en base 2


◼ Si un nombre M s’écrit abcde2, cela signifie que :
◼ M = a.24 + b.23 + c.22 + d.21 + e.20
◼ M = a.16 + b.8 + c.4 + d.2 + e.1
Le codage des entiers et l’arithmétique binaire

Binaire positif vers décimal positif


Exemples
◼ Si N = 10110102, nous obtenons :
◼ N = 126 + 025 + 124 + 123 + 022 + 121 + 020
◼ N = 164 + 032 + 116 + 18 + 04 + 12 + 01
◼ N = 9010

◼ Si N = 10100012, nous obtenons :


◼ N = 126 + 025 + 124 + 023 + 022 + 021 + 120
◼ N = 164 + 032 + 116 + 08 + 04 + 02 + 1 1
◼ N = 8110
Le codage des entiers et l’arithmétique binaire

Décimal positif vers binaire positif


Première méthode (les divisions successives)
◼ Soit un nombre N = xyz10 écrit en base 10, nous devons
écrire ce même nombre sous la forme :
N = N0 = an . 2n + an-1 . 2n-1 … + a0 . 20

◼ Pour cela, on effectue une série de divisions par 2 :


◼ Si on divise N0 par 2, on obtient :
▪ un reste qui correspond à a0 ;
▪ un quotient qui devient le nombre N1 qui sera divisé
par 2 au coup suivant …
◼ On s’arrête quand Ni est égal à 0 ou à 1.
Le codage des entiers et l’arithmétique binaire

Décimal positif vers binaire positif


Exemple
◼ Si N = 9010, nous obtenons :

90 2
-90 45 45 2
0 -44 22 22 2
1 -22 11 11 2
0 -10 5 5 2
1 -4 2 2 2
1 -2 1 1 2
0 -0 0
1

◼ En lisant de droite à gauche, on retrouve 10110102.


Le codage des entiers et l’arithmétique binaire

Décimal positif vers binaire positif


Seconde méthode (algorithme d’écriture)

Début

Saisie de N B=« »

M=mMax

oui non
M≥0

Ajouter oui non Ajouter Afficher B


2M>N
«0»àB «1»àB

M=M–1 N = N – 2M End
Le codage des entiers et l’arithmétique binaire

Décimal positif vers binaire positif


Seconde méthode (algorithme d’écriture)
◼ On pose les variables suivantes :

◼ N est le nombre décimal à transformer.


◼ B est le nombre binaire obtenu à l’issu du traitement.
◼ M est la puissance de 2 « en cours »
◼ mMax est la puissance de 2 de départ, cette variable
entière correspond également au nombre de chiffres
avec lesquels sera écrit B. Généralement ce nombre
est fixé de la manière suivante :
▪ on prend la puissance de 2 (2k), immédiatement
inférieur à N ;
▪ on fixe alors mMax = k.
Le codage des entiers et l’arithmétique binaire

Décimal positif vers binaire positif


Exemple
◼ Si N = 2610 et mMax = 510, nous obtenons :

M Test N B
départ 26 « »
5 25=32 > 26 26 «0»
4 24=16 ≤ 26 10 = 26 – 16 « 01 »
3 23=8 ≤ 10 2 = 10 – 8 « 011 »
2 22=4 > 2 2 « 0110 »
1 21=2 ≤ 2 0=2–2 « 01101 »
0 20=1 > 0 0 « 011010 »
Le codage des entiers et l’arithmétique binaire

Addition des binaires positifs


Méthode manuelle avec propagation de la retenue
◼ Même principe que l’addition « à la main » en base 10.

◼ Retenue créée lorsque la somme dépasse 12.

◼ 4 cas de figure :
◼ 02 + 0 2 = 02
◼ 02 + 1 2 = 12
◼ 12 + 0 2 = 12
◼ 12 + 12 = 121 + 020 = 102 (on a créé une retenue)
Le codage des entiers et l’arithmétique binaire

Addition des binaires positifs


Exemple
◼ Additionner 101110112 et 11012

Addition binaire Addition décimale


1 1 1 1 1 1 1 1
1 0 1 1 1 0 1 1 1 8 7
+ 1 1 0 1 + 1 3
1 1 0 0 1 0 0 0 2 0 0

=126 + 126 + 025 + 024 + 123 + 022 + 021+ 020


= 1128 + 164 + 032 + 0 16 + 18 + 04 + 02 + 01
Le codage des entiers et l’arithmétique binaire

Soustraction des binaires positifs


Méthode manuelle avec propagation de la retenue négative
◼ Même principe que la soustraction « à la main » en base 10.

◼ Retenue créée lorsque la différence est inférieure à 02

◼ 4 cas de figure :
◼ 02 – 0 2 = 02
◼ 12 – 1 2 = 02
◼ 12 – 0 2 = 12
◼ 02 – 12 = 102 – 12 – 102 = 12 – 102 (retenue négative)
Le codage des entiers et l’arithmétique binaire

Soustraction des binaires positifs


Exemple
◼ Soustraire 11012 à 110010002

Soustraction binaire Soustraction décimale


-1 -1 -1 -1 -1 -1 -1 -1
1 1 100 10
0 11
1 10
0 10
0 10
0 2 10
0 10
0
– 1 1 0 1 – 1 3
1 0 1 1 1 0 1 1 1 8 7
Le codage des entiers et l’arithmétique binaire

Codage des nombres binaires négatifs


Le principe
◼ Nombre signé.

◼ 3 codages possibles :
◼ coder par bit de signe et valeur absolue ;
◼ utiliser le complément à 1 ;
◼ utiliser le complément à 2.
Le codage des entiers et l’arithmétique binaire

Codage des nombres binaires négatifs


Codage par bit de signe et valeur absolue
◼ Signe porté par le bit de poids fort :
◼ 0 pour une valeur positive ;
◼ 1 pour une valeur négative.

◼ Les autres bits servent à coder la valeur absolue.

Valeur positive Valeur négative


000010112 = 1110 100010112 = – 1110
000000002 = 010 100000002 = – 010
Le codage de entiers et l’arithmétique binaire

Codage des nombres binaires négatifs


Complément à 1
◼ Signe encore porté par le bit de poids fort.
◼ On passe d’une valeur à son opposée en inversant les bits.

Valeur positive Valeur négative


000010112 = 1110 111101002 = – 1110
000000002 = 010 111111112 = – 010
Le codage des entier et l’arithmétique binaire

Codage des nombres binaires négatifs


Complément à 2

◼ Signe toujours porté par le bit de poids fort.


◼ On construit le complément à 2 en ajoutant 1 au
complément à 1 décrit précédemment.
◼ S’effectue en ayant fixé le nombre de bits utilisés
pour coder les nombres (ici 8 bits).

Valeur positive Valeur négative


000010112 = 1110 111101002 + 12 = 111101012 = – 1110
000000002 = 010 111111112 + 12 = 000000002 = – 010
Le codage des entiers et l’arithmétique binaire

Codage des nombres binaires négatifs


Complément à 2
◼ Encore appelé « complément vrai ».
◼ On somme un nombre et son contraire : on obtient bien 0
car on perd la dernière retenue (addition sur un nombre
limité de bits).

Addition binaire Addition décimale


1 1 1 1 1 1 1
1 1 1 1 0 1 0 1 -1 1
+ 0 0 0 0 1 0 1 1 + 1 1
1 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0
Le codage des entiers et l’arithmétique binaire

Soustraction des binaires positifs (bis)


Méthode par addition du complément à 2
◼ Plus facilement transposable en électronique.
◼ Nécessite de fixer le nombre de bits sur lequel on travaille.

◼ Supposons la soustraction A – B, le processus est le


suivant :
◼ construire le complément à 2 de B (on obtient –B)
◼ sommer A et –B
Le codage des entiers et l’arithmétique binaire

Soustraction des binaires positifs (bis)


Exemple
◼ Soustraire 1610 à 4710
◼ Etape 1 : Traduire en binaire

Décimal Binaire Complément à 1 Complément à 2


47 00101111 11010000 11010001
16 00010000 11101111 11110000

◼ Etape 2 : Effectuer l’addition

Addition binaire Soustraction décimale


1 1
0 0 1 0 1 1 1 1 4 7
+ 1 1 1 1 0 0 0 0 – 1 6
1 0 0 0 1 1 1 1 1 3 1
Le codage des entiers et l’arithmétique binaire

Multiplication des binaires


La multiplication par une puissance de 2
◼ Se traduit par un décalage vers la gauche du nombre
multiplié.
◼ Nombre de crans correspondant à la puissance de deux de
l’élément multiplicateur.

◼ Supposons deux nombre A et B, tel que B=2N :


◼ B s’écrit « 1 » suivi de N « 0 »
◼ A  B s’écrit donc A suivi de N « 0 »
Le codage des entiers et l’arithmétique binaire

Multiplication des binaires


Exemple de multiplication par une puissance de 2
◼ Soient A = 1011011101110012 et B = 100002.

◼ On obtient A  B = 10110111011100100002.

◼ Si nous traduisons ces 3 nombres en base 10, nous avons :


◼ A = 2348110
◼ B = 1610
◼ A  B = 37569610 = 2348110  1610
Le codage des entiers et l’arithmétique binaire

Multiplication des binaires


Le principe de la multiplication de deux binaires
◼ Plusieurs multiplications successives par des puissances
de 2 croissantes (plusieurs décalages).
◼ Une addition des produits intermédiaires pour former le
résultat final.
Le codage des entiers et l’arithmétique binaire

Multiplication des binaires


Exemple
◼ Multiplier 101001112 à 11002

Multiplication binaire Multiplication décimale

1 0 1 0 0 1 1 1 1 6 7
 1 1 0 0  1 2
1 1 1 1 1
0 0 0 0 0 0 0 0 3 3 4
0 0 0 0 0 0 0 0 0 + 1 6 7 0
1 0 1 0 0 1 1 1 0 0 2 0 0 4
+ 1 0 1 0 0 1 1 1 0 0 0
1 1 1 1 1 0 1 0 1 0 0
Le codage des entiers et l’arithmétique binaire

Division des binaires


La division par une puissance de 2
◼ Se traduit par un décalage vers la droite du nombre
divisé.
◼ Nombre de crans correspondant à la puissance de deux de
l’élément diviseur.

◼ Supposons deux nombre A et B, tel que B=2N :


◼ B s’écrit « 1 » suivi de N « 0 »
◼ A / B s’écrit donc « A privé des N bits de poids faible »

◼ La division entière se traduit donc par la perte des bits


de poids faible.
Le codage des entiers et l’arithmétique binaire

Division des binaires


Exemple de division par une puissance de 2
◼ Soient A = 1011011101110012 et B = 100002.

◼ On obtient A / B = 1011011101110012.

◼ Si nous traduisons ces 3 nombres en base 10, nous avons :


◼ A = 2348110
◼ B = 1610
◼ A / B = 146710
Le codage des entiers et l’arithmétique binaire

Division des binaires


Le principe de la division de deux binaires
◼ La division manuelle de deux binaires s’effectue de la
même manière que la division manuelle de deux décimaux.

◼ Pour décrire le processus, nous supposons deux nombres


binaires A et B. Nous posons alors les notations suivantes :
◼ nA est la taille (en nombre de chiffres) du nombre A
◼ nB est la taille (en nombre de chiffres) du nombre B
◼ b1 et b2 sont des numéros de bits (pour un binaire ayant
une taille de N, les bits sont numérotés de 0 à N-1, le
bit 0 étant celui de poids faible
◼ A’ est un nombre binaire formé en prenant les bits de A
dont les numéros sont compris entre b1 et b2
Le codage des entiers et l’arithmétique binaire

Division des binaires


Le principe de la division de deux binaires (A/B)

Début Quotient = « »

b1 = nA-1
A’ = A’ – B
b2 = max (0, b1 – nB)

Ajouter « 1 » non
b1-b2 ≥ nB Fin
au quotient
oui
oui
Construire A’ en
A’ ≥
B
prenant les bits
non numéro b1 … b2

Ajouter « 0 »
b2 = b2 -1
à quotient
Le codage des entiers et l’arithmétique binaire

Division des binaires


Exemple
◼ Diviser 101101112 par 11002

Division binaire Division décimale


10110111 1100 1 8 3 1 2
– 1100 0 1111 –1 2 1 5
1010111 6 3
– 1100 – 6 0
100111 3
– 1100
1111
– 1100
11

◼ On a bien 11112 = 1510 pour le quotient et 112 = 310 pour le


reste de la division.
Le codage des informations

Les codages hexadécimal,


octal et DCB
Les codages hexadécimal, octal et DCB

Plan de la partie
Voici les chapitres que nous allons aborder :

◼ Le codage hexadécimal.
◼ Le codage octal.
◼ Le codage DCB.
Les codages hexadécimal, octal et DCB

Le codage hexadécimal
Le principe
◼ « L’hexa » permet de manipuler des nombres en base 16.
◼ Nous disposons :
◼ des 10 chiffres (0 jusqu’à 9)
◼ des 6 premières lettres (A, B, C, D, E et F).

◼ Ce codage est largement utilisé aujourd’hui car, il permet de


manipuler les octets comme des blocs de chiffres
hexadécimaux, ce qui évite quelques erreurs de calcul.

◼ Les opérations sur ce type de base suivent les principes


énoncés précédemment pour les binaires.
Les codages hexadécimal, octal et DCB

Le codage hexadécimal
Conversion hexadécimal vers décimal
◼ A l’instar du codage binaire, il est possible de déterminer la
valeur décimale associée à un nombre hexadécimal en
utilisant un tableau de correspondance.

Nombre hexa. 1 A F 0 C

Valeurs 1 10 15 0 12

    
Coefficients 164
65536 163
4096 162
256 161
16 10
16

Nombre décimal 65536 + 40960 + 3840 + 0 + 12 = 110348


Les codages hexadécimal, octal et DCB

Le codage hexadécimal
Conversion décimal vers hexadécimal
◼ Comme pour le codage binaire, il est également possible
de convertir un nombre décimal en hexadécimal grâce à
une suite de division par 16.
◼ Si on considère la conversion du nombre 276510, on a :

2765 16
-2752 172 172 16
13 -160 10 10 16
12 - 0 0
10

◼ Si on lit de droite à gauche, on 10, 12 et 13 soit ACD16


Les codages hexadécimal, octal et DCB

Le codage hexadécimal
Conversion héxadécimal vers binaire
◼ La conversion hexadécimal vers binaire s’effectue très
simplement car un nombre hexadécimal correspond à un
bloc de quatre bit (quartet).

Nombre hexadécimal 1 A F 0 C

Quartets 0001 1010 1111 0000 1100

Nombre binaire 0001101011110001100


Les codages hexadécimal, octal et DCB

Le codage hexadécimal
Conversion binaire vers hexadécimal
◼ Pour effectuer la conversion inversion, il suffit de scinder le
nombre binaire en quartet (en commençant par les bit de
poids faible) puis de convertir chaque quartet pour obtenir
le nombre hexadécimal correspondant.

Nombre binaire 101101011010011000

Quartets 0010 1101 0110 1001 1000

Nombre hexadécimal 2 D 6 9 8
Les codages hexadécimal, octal et DCB

Le codage hexadécimal
La table de correspondance
Décimal Binaire Hexa Décimal Binaire Hexa
0 000000 00 17 010001 11
1 000001 01 18 010010 12
2 000010 02 19 010011 13
3 000011 03 20 010100 14
4 000100 04 21 010101 15
5 000101 05 22 010110 16
6 000110 06 23 010111 17
7 000111 07 24 011000 18
8 001000 08 25 011001 19
9 001001 09 26 011010 1A
10 001010 0A 27 011011 1B
11 001011 0B 28 011100 1C
12 001100 0C 29 011101 1D
13 001101 0D 30 011110 1E
14 001110 0E 31 011111 1F
15 001111 0F 32 100000 20
16 010000 10 33 100001 21
Les codages hexadécimal, octal et DCB

Le codage hexadécimal
L’addition manuelle avec propagation de la retenue

◼ Même principe que l’addition « à la main » en base 10.

◼ Retenue créée lorsque la somme dépasse F16.

◼ 64 cas de figure regroupés dans le tableau de la diapositive


suivante.
Les codages hexadécimal, octal et DCB

Le codage hexadécimal
Table d’addition
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 1 2 3 4 5 6 7 8 9 A B C D E F
1 1 2 3 4 5 6 7 8 9 A B C D E F 10
2 2 3 4 5 6 7 8 9 A B C D E F 10 11
3 3 4 5 6 7 8 9 A B C D E F 10 11 12
4 4 5 6 7 8 9 A B C D E F 10 11 12 13
5 5 6 7 8 9 A B C D E F 10 11 12 13 14
6 6 7 8 9 A B C D E F 10 11 12 13 14 15
7 7 8 9 A B C D E F 10 11 12 13 14 15 16
8 8 9 A B C D E F 10 11 12 13 14 15 16 17
9 9 A B C D E F 10 11 12 13 14 15 16 17 18
A A B C D E F 10 11 12 13 14 15 16 17 18 19
B B C D E F 10 11 12 13 14 15 16 17 18 19 1A
C C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B
D D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C
E E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D
F F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E
Les codages hexadécimal, octal et DCB

Le codage hexadécimal
Exemple
◼ Additionner A8D23F1D16 et ABCD16

Addition hexadécimale Addition décimale


1 1
A 8 D 2 3 F 1 D 2 8 3 2 3 5 1 0 0 5
+ A B C D + 4 3 9 8 1
A 8 D 2 E A E A 2 8 3 2 3 9 4 9 8 6
Les codages hexadécimal, octal et DCB

Le codage hexadécimal
Soustraction manuelle avec propagation de la retenue
négative

◼ Même principe que la soustraction « à la main » en base


10.

◼ Retenue négative créée lorsque la différence est inférieure


à 016.

◼ Exemple :
516 – F16 = 1516 – F16 – 1016 = 616 – 1016 (retenue négative)

◼ 64 cas de figure regroupés dans le tableau de la diapositive


suivante.
Les codages hexadécimal, octal et DCB

Le codage hexadécimal
Table de soustraction
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
0 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
1 F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E
2 E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D
3 D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C
4 C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B
5 B C D E F 10 11 12 13 14 15 16 17 18 19 1A
6 A B C D E F 10 11 12 13 14 15 16 17 18 19
7 9 A B C D E F 10 11 12 13 14 15 16 17 18
8 8 9 A B C D E F 10 11 12 13 14 15 16 17
9 7 8 9 A B C D E F 10 11 12 13 14 15 16
A 6 7 8 9 A B C D E F 10 11 12 13 14 15
B 5 6 7 8 9 A B C D E F 10 11 12 13 14
C 4 5 6 7 8 9 A B C D E F 10 11 12 13
D 3 4 5 6 7 8 9 A B C D E F 10 11 12
E 2 3 4 5 6 7 8 9 A B C D E F 10 11
F 1 2 3 4 5 6 7 8 9 A B C D E F 10
Les codages hexadécimal, octal et DCB

Le codage hexadécimal
Exemple
◼ Soustraire A8D2FE2 à ABCD12342

Soustraction hexadécimale Soustraction décimale


-1 -1 -1 -1 -1 -1
A B C D 11
1 12
2 13
3 14
4 2 8 8 2 3 144 13
3 4 7 6
– A 8 D 2 F E – 1 1 0 6 4 0 6 2
A B 2 4 3 F 3 6 2 8 7 1 2 7 9 4 1 4
Les codages hexadécimal, octal et DCB

Le codage hexadécimal
La multiplication par une puissance de 16
◼ Se traduit par un décalage vers la gauche du nombre
multiplié.
◼ Nombre de crans correspondant à la puissance de seize
de l’élément multiplicateur.

◼ Supposons deux nombre A et B, tel que B=16N :


◼ B s’écrit « 1 » suivi de N « 0 »
◼ A  B s’écrit donc A suivi de N « 0 »
Les codages hexadécimal, octal et DCB

Le codage hexadécimal
Exemple de multiplication par une puissance de 16
◼ Soient A = B7AC025DE875AC7F16 et B = 1000016.

◼ On obtient A  B = B7AC025DE875AC7F000016.

◼ Si nous traduisons ces 3 nombres en base 10, nous avons :


◼ A = 1323495600729028518310
◼ B = 6553610
◼ A  B = 1323495600729028518310  6553610
= 1323495600729028518310
Les codages hexadécimal, octal et DCB

Le codage hexadécimal
Le principe de la multiplication de deux hexadécimaux
◼ On réalise d’abord plusieurs multiplications successives
par des multiples de puissances de 16 croissantes
(plusieurs décalages) :
◼ on se préoccupe d’abord du résultat de la
multiplication des deux chiffres hexadécimaux en
utilisant le tableau de la diapositive suivante ;
◼ on ajoute le nombre de zéro correspondant à la
puissance de 16 du multiplicateur.

◼ Lorsque les multiplications sont calculée, on effectue une


addition des produits intermédiaires pour former le résultat
final.
Les codages hexadécimal, octal et DCB

Le codage hexadécimal
Table de multiplication
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9 A B C D E F
2 0 2 4 6 8 A C E 10 12 14 16 18 1A 1C 1E
3 0 3 6 9 C F 12 15 18 1B 1E 21 24 27 2A 2D
4 0 4 8 C 10 14 18 1C 20 24 28 2C 30 34 38 3C
5 0 5 A F 14 19 1E 23 28 2D 32 37 3C 41 46 4B
6 0 6 C 12 18 1E 24 2A 30 36 3C 42 48 4E 54 5A
7 0 7 E 15 1C 23 2A 31 38 3F 46 4D 54 5B 62 69
8 0 8 10 18 20 28 30 38 40 48 50 58 60 68 70 78
9 0 9 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87
A 0 A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96
B 0 B 16 21 2C 37 42 4D 58 63 6E 79 84 8F 9A A5
C 0 C 18 24 30 3C 48 54 60 6C 78 84 90 9C A8 B4
D 0 D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3
E 0 E 1C 2A 38 46 54 62 70 7E 8C 9A A8 B6 C4 D2
F 0 F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3 D2 1E
Les codages hexadécimal, octal et DCB

Le codage hexadécimal
Exemple
◼ Multiplier 1234562 à ABCD2

Multiplication hexadécimale Multiplication décimale

1 2 3 4 5 6 1 1 9 3 0 4 6
 A B C D  4 3 9 8 1
1 1
2 2
1 1 2
3
2 3 4
3 4 4 1 1 2 2 2 2 1 1 1
D
E C
A A
7 4
8 1
5 E 1 1 9 3 0 4 6
C
D A
8 7
4 4
0 10
C
0 8 0 9 5 4 4 3 6 8 0
B 8
C 6 1 C
3 F B
7 2 0 0 1 0 7 3 7 4 1 4 0 0
+ B
A 6
4 10
E
0 B
8 5
2 C 0 0 0 3 5 7 9 1 3 8 0 0 0
C 3 7 8 9 5 A D E + 4 7 7 2 1 8 4 0 0 0 0
5 2 4 7 1 3 5 6 1 2 6
Les codages hexadécimal, octal et DCB

Le codage hexadécimal
Le principe de la division de deux hexadécimaux
◼ La division manuelle de deux hexadécimaux s’effectue de la
même manière que la division manuelle de deux décimaux
ou de deux binaires

◼ Cependant, à la différence de la division binaire, il faudra


construire au préalable une table des multiples du diviseurs
afin de déterminer :
◼ quel chiffre Q, il convient d’ajouter au quotient à chaque
étape de la division ;
◼ quel valeur V, il convient d’utiliser pour effectuer la
soustraction intermédiaire.
Les codages hexadécimal, octal et DCB

Division en hexadécimal
Exemple
◼ Diviser C423DE716 par E2316

Division hexdécimale Division


Table de
décimale
E23
C 4 2 3 DE 7 E 2 3 E232 0 2 7 8 1 5E233 6 91 9= 7F3B
5 6=61C46
-B 7C 7 0DD FE - 1 8 30 9=52A69 E230 5 A
E23 6 8=38D5E
0
C 5 C D E23 2 44 7=1388C
7 E23  B = 9B81
E23  5 = 46AF E23  C = A9A4
-B 7 C 7 -21714
E23  6 = 54D2 E23  D = B7C7
E 0 6 E 30038
E23  7 = 62F5 E23  E = C5EA
-D 4 0 D E23 - 82 8=97118
5 2 E23  F = D40D
C 6 1 7 10861
-C 5 EA -10857
2D 45

◼ On a bien DDFE16 = 5683010 pour le quotient et 2D2 = 4510


pour le reste de la division.
Les codages hexadécimal, octal et DCB

Le codage octal
Le principe
◼ Utilisée pour manipuler des nombres en base 8.
◼ Nous disposons des chiffres 0, 1, 2, 3, 4, 5, 6 et 7.

◼ Employé au début de l'informatique car les premières


machines travaillaient sur des « mots » qui avaient une
largeur de 12 bits.

◼ Les opérations sur ce type de base suivent les principes


énoncés précédemment pour les binaires et les nombres
hexadécimaux.
Les codages hexadécimal, octal et DCB

Le codage octal
Table de correspondance du codage octal
Décimal Binaire Octal
0 00000 00
1 00001 01
2 00010 02
3 00011 03
4 00100 04
5 00101 05
6 00110 06
7 00111 07
8 01000 10
9 01001 11
10 01010 12
11 01011 13
12 01100 14
13 01101 15
14 01110 16
15 01111 17
16 10000 20
Les codages hexadécimal, octal et DCB

Le codage DCB
Le principe
◼ Le « Décimal Codé Binaire » (BCD ou Binary Coded
Decimal) est un code de représentation des nombres dans
les systèmes numériques.

◼ Dans ce code, chaque chiffre de la représentation décimale


est codée sur un groupe de 4 bits :
◼ avantage : affichage décimal grandement facilité
◼ inconvénient : des combinaisons de bits sont inutilisées
Les codages hexadécimal, octal et DCB

Le codage DCB
Table de correspondance du DCB
Décimal DCB
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
10 1010
11 1011
12 1100 Combinaisons de bits
13 1101 non-utilisées dans le DCB
14 1110
15 1111
Les codages hexadécimal, octal et DCB

Le codage DCB
Exemple
◼ Codage du nombre 166410

Valeur codée Taille


En binaire 110 1000 0000 11
En DCB 0001 0110 0110 0100 16

166410
Le codage des informations

Le codage des réels


Le codage des réels

La représentation des nombres réels


◼ Un nombre réel est constitué de deux parties : la partie
entière et la partie fractionnelle ( les deux parties sont
séparées par une virgule )
◼ Problème : comment indiquer à la machine la position de
la virgule ?
◼ Il existe deux méthodes pour représenter les nombre
réel :
◼ Virgule fixe: la position de la virgule est fixe
◼ Virgule flottante: la position de la virgule change (
dynamique )
Le codage des réels

Les binaires à virgule fixe


La première façon de représenter les nombres réels
◼ Les explications précédentes restent valables.
◼ Un nombre de bits fixés portent des puissances de deux
négatives.

◼ Si un nombre M s’écrit abc.de2, cela signifie que :


◼ M = a  22 + b  21 + c  20 + d  2-1 + e  2-2
◼ M = a  4 + b  2 + c  1 + d  0,5 + e  0,25
Le codage des réels

Les binaires à virgule fixe


Exemple
◼ Si N = 01011.0112 , nous obtenons :
◼ N = 23 + 21 + 20 + 2-2 + 2-3
◼ N = 8 + 2 + 1 + 1/4 + 1/8
◼ N = (64 + 16 + 8 + 2 + 1) / 8
◼ N = 91/8
◼ N = 11.37510
Le codage des réels

Les binaires à virgule fixe


◼ Dans cette représentation la partie entière est
représentée sur n bits et la partie fractionnelle sur p bits
, en plus un bit est utilisé pour le signe.
◼ Exemple : si n=3 et p=2 on va avoir les valeurs
suivantes
Signe P.E P.F Valeur

0 000 00 + 0,0 Dans cette représentation


0 000 01 + 0,25 les valeurs sont limitées et
0 000 10 + 0,5 nous n’avons pas une
0 000 11 + 0,75 grande précision
0 001 .00 + 1,0
. . . .
. . . .
Le codage des réels

Les binaires à virgule fixe


Les limites de la méthode de codage
◼ Ne permet pas de gérer des grands nombres ou des petits
nombres simultanément.
◼ Provoque des erreurs d’arrondis.
Exemple:
◼ Considérons deux binaires non signés, codés sur 8 bits
avec deux bits pour la partie décimale :
1110 = 001011.002 et 810 = 001000.002

◼ On fait 11/8 :
◼ On aurait dû obtenir 1.37510 = 000001.0112
◼ On obtient 1.2510 = 000001.0110
◼ On a supprimé le dernier bit.
Le codage des réels

Les binaires à virgule flottante


La notation scientifique en base 10
◼ Permet de manipuler des grands
nombres et/ou des petits nombres
simultanément.
◼ Séparation de la précision
(mantisse) de l’ordre de grandeur
(exposant).

◼ De la forme :
N = mantisse  10exposant
Le codage des réels

Les binaires à virgule flottante


La norme IEEE 754
◼ La norme IEEE 754 publiée en 1985.

◼ 3 modes de représentation des nombres binaires à virgules


flottantes :
◼ les nombres « simple précision » codés sur 32 bits
◼ les nombres « double précision » codés sur 64 bits
◼ les nombres « précision étendue » codés sur 80 bits
Le codage des réels

Les binaires à virgule flottante


La norme IEEE 754 – Les 3 champs
◼ Les nombres sont codés avec 3 champs :
◼ un bit de signe (0 positif et 1 négatif) ;
◼ un champ exposant ;
◼ un champ mantisse.

Signe Exposant Mantisse


Simple précision 1 bit 8 bits 23 bits
Double précision 1 bit 11 bits 52 bits
Précision étendue 1 bit 15 bits 64 bits
Le codage des réels

Les binaires à virgule flottante


La norme IEEE 754 – Le champ exposant
◼ Exposants positifs et exposants négatifs.
◼ Utilisation d’un biais (qui permet d’avoir un champ
exposant toujours positif).

Lecture du nombre
à virgule flottante
Codage de l’exposant Lecture de l’exposant

Valeur du champ
Exposant réel + biais
exposant – biais

Ecriture du nombre
à virgule flottante
Le codage des réels

Les binaires à virgule flottante


La norme IEEE 754 – Le champ exposant – Exemples
◼ Codage de l’exposant :
Exposant réel Biais Valeur codée
Simple précision 0 127 127
Double précision -27 1023 996
Précision étendue -500 16383 15883

◼ Lecture de l’exposant
Valeur codée Biais Exposant réel
Simple précision 127 127 0
Double précision 996 1023 -27
Précision étendue 15883 16383 -500
Le codage des réels

Les binaires à virgule flottante


La norme IEEE 754 – Le champ mantisse
◼ La mantisse est normalisé.
◼ La partie entière ne contient qu’un chiffre différent de 0.
◼ Assure l’unicité de l’écriture d’un nombre par la notation
scientifique.

N = abcde0000  10-4 N = abc.de  102


N = abcde000  10-3 N = ab.cde  103
N = abcde00  10-2 N = a.bcde  104
N = abcde0  10-1 N = 0.abcde  105
N = abcde  100 N = 0.0abcde  106
N = abcd.e  101 N = 0.00abcde  107
Le codage des réels

Les binaires à virgule flottante


La norme IEEE 754 – Le champ mantisse – Le bit caché
◼ En base 2, le chiffre différent de 0 est 1.
◼ Pas besoin de représenter la partie entière (bit caché).
◼ On gagne 1 bit pour la fraction (plus de précision).

1.abcde  2exp signe exp + biais abcde


Le codage des réels

Les binaires à virgule flottante


Conversion binaire IEEE 754 vers décimal réel
◼ On suppose un nombre binaire N, codé selon le format
IEEE 754

SM Eb M
Signe Exposant Mantisse
Mantisse baisé

◼ Le nombre N converti en base 10 est calculé par la


formule suivante :

taille (mantisse )
 −i 
N = (− 1) 
 1 +     exp −biais
signe
mantissei 2  2
 i=1 
Le codage des réels

Les binaires à virgule flottante


Conversion binaire IEEE 754 vers décimal réel – Exemple
◼ Soit N = 1 10000010 00110000000000000000000)2

◼ N est codé en simple précision donc


◼ taille(mantisse) = 23
◼ biais = 127
1 10000010 00110000000000000000000

-1 130 – 127 1 + 0.125 + 0.0625

N = -1.1875  23 = - 9.5
Le codage des réels

Les binaires à virgule flottante


Conversion décimal réel vers binaire IEEE 754
◼ La conversion s’effectue en trois étapes :
◼ conversion du nombre réel écrit en base 10, vers la
base 2 en utilisant une version modifiée de
l’algorithme d’écriture (le test d’arrêt est N>0 et
non M≥0) ;
◼ normalisation du nombre binaire obtenu ;
◼ troncature éventuelle de la mantisse selon la
précision choisie.

◼ Peut conduire à des valeurs approchées qui entraînent


de erreurs d’arrondis.
Le codage des réels

Les binaires à virgule flottante


Conversion décimal réel vers binaire IEEE 754
◼ Exemple: N=525,5)10
◼ Le nombre positif → SM=0
◼ 525,5 = 1000001101,1
◼ En normalisant, on trouve 1,0000011011 * 29
◼ Eb = 127+9 = 10001000)2
◼ Mantisse est composé de la partie décimale de 525,5
0000011011
M= 00000110110000000000000
◼ 0 10001000 00000110110000000000000
Le codage des informations

Le codage des textes


Le codage des textes

Plan de la partie
Voici les chapitres que nous allons aborder :
◼ Le besoin de coder.
◼ Le codage ASCII.
◼ Le codage EBCDIC.
◼ Le codage UNICODE.
Le codage des textes

Le besoin de coder
Le codage des idées par le vocabulaire et la parole
◼ L’homme éprouve naturellement le besoin de communiquer
avec ses semblable. Pour cela, il se sert le plus souvent de
la parole pour transmettre ses idées qui sont codées en
utilisant un vocabulaire commun.
Le codage des textes

Le besoin de coder
Le codage par le langage des signes
◼ Dans certains cas, il n’est pas possible d’utiliser la parole
car l’environnement ne le permet pas (trop bruit,
éloignement) ou car l’un des protagoniste est sourd et/ou
muet. On peut alors coder l’information en utilisant le
langage des signes à la place du code vocal.
Le codage des textes

Le besoin de coder
Le codage pour le stockage
◼ Si les deux protagonistes ne sont pas présents au même
moment, l’émetteur peut écrire le message en utilisant des
symboles pour le coder et le stocker sur un support
comme le papier.
Le codage des textes

Le besoin de coder
La nécessité de coder
◼ Quelque soit la situation, il est donc nécessaire de coder
l’information pour la stocker et/ou la transmettre d’un
interlocuteur à l’autre.

◼ Ce codage a évolué au cours du temps, en particulier avec


l’apparition de l’ordinateur (transmission par réseau et
moyen de stockage), il a été nécessaire d’élaborer des
standard de codage des données textuelles pour faciliter
leur manipulation par des outils informatiques (logiciel) à
travers le monde.
Le codage des textes

Le codage ASCII
L’invention du code ASCII 7 bits
◼ En mai 1961 (ou 1963), Robert BEMER, le responsable des
standard de programmation chez IBM, propose à l’ANSI
(American National Standards Institute) un code qui serait
commun à l’ensemble de ordinateurs afin de faciliter la
transmission des informations.
◼ Comme le montre sa plaque de sa voiture, il était considéré
comme le « père de l’ASCII (American Standard Code for
Information Interchange) ».
Le codage des textes

Le codage ASCII
Les 128 codes de la table ASCII 7 bits
Le codage des textes

Le codage ASCII
Les 128 codes de la table ASCII 7 bits
Le codage des textes

Le codage ASCII
Exercice:
1. Codez en ASCII: Nous sommes dans SUPMTI.
4E 6F 75 73 20 73 6F 6D 6D 65 73 20 64 61 6E 73 20 53 55 50 4D 54 49 2E

2. Transcodez les séquences suivantes


47 72 6F 75 70 65 20 53 55 50 4D 54 49 3A
2D 52 41 42 41 54
2D 4D 45 4B 4E 45 53
2D 42 45 4E 49 20 4D 45 4C 4C 41 4C
2D 4F 55 4A 44 41

Réponse:
Groupe SUPMTI:
-RABAT
-MEKNES
-BENI MELLAL
-OUJDA
Le codage des textes

Le codage ASCII
Le 8ème bit de la table ASCII 7 bits
◼ Le bit non utilisé fut utilisé comme un bit de parité (parity
check) de la manière suivante :
◼ nous effectuons l'addition des 7 bits d'informations
◼ nous regardons si le bit de poids faible du résultat est à
0 (pair ou even) ou à 1 (impair ou odd)
◼ nous comparons ce bit avec le bit de parité :
▪ s'il est identique, il y a de bonnes chances que la
transmission soit correcte
▪ sinon il existe au moins une erreur de parité (un bit
a changé de valeur à cause d'un problème
électronique)
Le codage des textes

Le codage ASCII
Le 8ème bit de la table ASCII 7 bits
◼ Ce mécanisme a été standardisé :
◼ par le comité ANSI (USA) en 1976 : ANSI X 3.16
◼ au niveau mondial, par le comité CCITT : V.4

◼ Le bit de parité n'est pas suffisant pour garantir l’intégrité de


la transmission et du stockage car deux changements de
parité peuvent leurrer ce mécanisme de détection mais
il a été (est) utilisé pour fiabiliser les communication et le
stockage des données (par exemple, barrettes mémoire
dotées de bit de parité).
Le codage des textes

Le codage ASCII
Le principe de la table ASCII 8 bits
◼ Plus tard, lorsque d'autres méthodes de détection et de
correction des erreurs ont été mises en place, le bit de
parité de l'ASCII a été utilisé pour stocker de nouveaux
symboles.

◼ Le DOS proposait alors de charger des pages de code


supplémentaires adaptés au pays (par exemple, il existe
une page de code « latin » qui propose les caractères
accentués pour les français).
Le codage des textes

Le codage ASCII
Une table de caractères supplémentaires en ASCII 8 bits
Le codage des textes

Le codage EBCDIC
Le principe
◼ Le codage EBCDIC (Extended Binary Coded Decimal
Interchange Code) a été proposé par IBM vers 1965 au
moment de la commercialisation de l’IBM 360.

◼ Ce code dérive de codes plus anciens développés par IBM


et respecte les conventions établies par HOLLERITH pour
l’utilisation des cartes perforées :
◼ les cartes devaient pouvoir être lues par des humains
(d’où l’utilisation du DCB)
◼ certaines dispositions permettent de distinguer
facilement les chiffres des lettres
◼ Chaque symbole est codé avec au moins un trou pour
synchroniser les lecteurs de cartes …
Le codage des textes

Le codage EBCDIC
Le principe
◼ Ces conventions entraînent une sous utilisation des
combinaisons (il y a des trous dans la table EBCDIC)
Le codage des textes

Le codage EBCDIC
Le concurrent malheureux de l’ASCII
◼ Lorsque l’ASCII a été proposé, IBM a essayé de réagir afin
de protéger son investissement.

◼ Cependant, l’ASCII a progressivement supplanté l’EBCDIC.


◼ Les raisons avancées sur l’échec de l’EBCDIC face à
l’ASCII étaient :
◼ qu’il existait différentes versions de l’EBCDIC (créées
par IBM et des concurrents) qui étaient incompatibles
entre elles ;
◼ Certains caractères de ponctuation étaient absents de
l’EBCDIC mais présents dans l’ASCII.
Le codage des textes

Le codage UNICODE
Les limites de la table ASCII
◼ La table ASCII fut mise au point aux Etats-Unis, elle
permettait donc de coder les caractères de la langue
anglaise ainsi que des symboles spécifiques comme le
dollars ($).
◼ Lorsqu’une application devait être utilisée dans un autre
pays (la France ou l’Allemagne), certains caractères
doivent être ajoutés (les lettres accentuées, le ß …).
◼ Dans certains pays (la Russie, les pays arabophones …),
il fallait ajouter un alphabet complet.
Le codage des textes

Le codage UNICODE
La norme ISO/IEC 10646
◼ Ce groupe de travaille essaye donc de recenser tous les
caractères, symboles, glyphes, et lettres, nombres,
idéogrammes, logogrammes du monde entier afin de
constituer l'Universal Character Set (UCS).

◼ Le gros défi à surmonter est qu’un même symbole (une


lettre par exemple) peut être vu de différentes manières
d’une langue à l’autre.

◼ Pour contourner ce problème, il a fallu d’utiliser des


caractères abstraits (a … z, ^, ¨, Щ, ‫ )… گ‬qui sont
considéré comme des symboles de base.
Le codage des textes

Le codage UNICODE
La norme ISO/IEC 10646
◼ Certains symboles usuels sont donc décomposés en
caractères abstraits.
◼ Par exemple le « â » est vu comme un « a » et un « ^ ».
Le codage des textes

Le codage UNICODE
L’invention de l’Unicode et la création du consortium
◼ À la même époque, Joe BECKER de Xerox à Palo Alto
travaillait sur un jeu de caractères universel qu’il nommait
Unicode en 1987.

◼ Plus tard, en 1988, plusieurs industriels, dont Xerox, se


réunissent pour former le consortium Unicode.
Le codage des textes

Le codage UNICODE
Le rapprochement entre l’Unicode et l’ISO/IEC 10646
◼ Le consortium Unicode et le groupe de travail du JTC1/SC2
ont commencé à collaborer à la fin 1991 afin de faire
converger les deux répertoires (et ainsi n’avoir qu’une seule
norme au niveau mondial).

◼ Cette convergence fut effective en janvier 1992.

◼ Depuis cette date, il existe une liaison entre les deux


organisations afin de synchroniser leurs travaux et de
conserver la corresponde entre les deux répertoires.
Le codage des textes

Le codage UNICODE
Le plan multilingue de base
◼ L'UCS comprend plus d‘un million de caractères abstraits
mais actuellement, seuls les 65536 premiers, qui
constituent le plan multilingue de base sont utilisés.
◼ Un certaine compatibilité ascendante est assurée entre ce
PMB et les tables existantes :
◼ les 128 premiers caractères qui correspondent à
l’ASCII 7 bits ;
◼ les 128 caractères suivants correspondent aux
caractères de la table ISO 8859-1 (le « latin-1 »).

◼ Le PMB et plus généralement l’UCS contient des trous qui


sont disponibles de futures évolutions de la table.
Le codage des textes

Le codage UNICODE
L’UTF
◼ UTF signifie « UCS transformation format ».

◼ Il s’agit d’un mécanisme de traduction des codes UCS en


des nombres codés sur 8 bits (UTF-8), 16 bits (UTF-16) ou
32 bits (UTF-32).

◼ Ce système a été mis au point afin de faciliter la prise en


charge l’évolution de l’UCS par les systèmes de façon
transparente (pas besoin de modifier les API).

◼ Ce système permet aussi de transférer des caractères


UCS sur le réseau utilisant du « vieux » matériels (on
transforme les caractères UCS en une suite d’octets grâce
à l’UTF-8)
Le codage des textes

Le codage UNICODE
L’UTF-8 (RFC 3629)
◼ Cette transformation est décrite dans la norme Unicode
mais également dans la RFC 3629 (RFC signifiant
« Request For Comment »).

◼ Pour déterminer le nombre d’octets utilisés pour coder un


caractères UCS, l’application doit analyser le ou les bits de
poids fort des octets.
◼ Le tableau de la diapositive suivante montre la
correspondance entre le numéro du caractère (en
hexadécimal) et le format des octets à transmettre.

◼ Cette transformation est construite de manière à n’utiliser


qu’un octet pour transporter les caractères de la table ASCII
7 bits.
Le codage des textes

Le codage UNICODE
L’UTF-8 (RFC 3629)

Numéro du
UTF-8
caractère
[0 ; 7F ] 0xxxxxxx

[80 ; 7FF] 110xxxxx 10xxxxxx

[800 ; FFFF] 1110xxxx 10xxxxxx 10xxxxxx

[10000 ; 1FFFFF] 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

[200000 ; 3FFFFFF] 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

[4000000 ; 7FFFFFFF] 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx


Le codage des textes

Le codage UNICODE

◼ Pour déterminer le code UTF-8 d'un numéro Unicode


donné, il suffit de :
1. Ecrire ce numéro en binaire, et supprimer les zéros
initiaux ; en fonction du nombre de bits utiles,
déterminer le nombre d'octets UTF-8 ;
2. Décomposer le binaire de droite à gauche en tranches
de 6 bits, plus une tranche de 5, 4 ou 3 (en complétant
au besoin par des zéros à gauche) ;
3. et "remplir" le squelette.
Le codage des textes

Le codage UNICODE
Exemples :
N° 2315 = x090B
en binaire 00001001 00001011, 12 bits utiles, il faut donc 3 octets
UTF-8
squelette 1110xxxx 10yyyyyy 10zzzzzz
décomposition 4+6+6 : 0000 + 1001 00 + 00 1011
résultat : 11100000 10100100 10001011
N° 945 = x03B1
en binaire 00000011 10110001, 10 bits utiles, donc 2 octets UTF-8,
squelette 110xxxxx 10yyyyyy
décomposition 5+6 : 011 10 + 11 0001
résultat : 11001110 10110001
Le codage des textes

Le codage UNICODE
L’UTF-16 (RFC 2781)
◼ Cette transformation, décrite dans la RFC 2781, consiste à
utiliser des groupes de 16 bits pour coder l’information (soit
deux octets) en respectant les règles suivantes :
◼ les caractères du plan multilingue de base utilise qu’un
seul bloc de 16 bits ;
◼ les caractères dont le code est compris entre 1000016 et
10FFFF16 sont représentés par deux valeurs de 16 bits :
▪ la première appartient à [D80016 ; DBFF16] ;
▪ la seconde appartient à [DC0016 ; DFFF16]
◼ les caractères dont le code est supérieur à 10FFFF16 ne
peuvent pas être représentés en UTF-16.
Le codage des textes

Le codage UNICODE
L’UTF-16 (RFC 2781)
◼ Cette transformation, plus exactement l’utilisation de
valeurs comprises appartenant aux intervalles [D80016 ;
DBFF16] et [DC0016 ; DFFF16] est possible car le plan
multilingue de base (comme l’UCS d’une manière générale)
comporte des trous.

◼ Cela signifie que si le PMB est modifié (que des caractères


sont ajoutés), l’UTF-16 devra également être modifiée.
Le codage des textes

Le codage UNICODE
L’UTF-16 (RFC 2781)
◼ La transformation s’effectue de la manière suivante :
◼ Si le code du caractère est inférieur à 1000016, on le
transforme un simplement en un entier non-signé codé
sur 16 bits.
◼ Sinon, on pose U’ = U - 1000016 . Ce U’ est codable sur
20 bits qui sont répartis entre deux blocs de 16 bits (32
bits) de la manière suivante :
▪ le premier bloc contient les bits « 110110 » suivis
des 10 bits de poids forts de U’ ;
▪ le second bloc contient les bits « 110111 » suivis
des 10 bits de poids faibles de U’.
Le codage des textes

Le codage UNICODE
L’UTF-16 (RFC 2781)
◼ Comme ce codage utilise deux octets, il est sensible à
l’architecture de la machine car il existe deux manières de
ranger les octets (l’ordre « Big Endian » et l’ordre « Little
Endian »).

◼ Il y a donc deux transformations UTF-16 (l’UTF-16-BE et


l’UTF-16-LE) qui se différencient par des couples d’octets
sont inversés l’un par rapport à l’autre.

Transmission en UTF-16-LE A B C D E F

Transmission en UTF-16-BE B A D C F E
Le codage des textes

Le codage UNICODE
L’UTF-16 (RFC 2781)
◼ Lors d’une transmission, il faut ajouter un « Byte Order
Mark » au début de chaîne afin d’indiquer dans quel mode
on se trouve.

◼ Pour cela, on a choisit de placer le caractère « Zero-Width


No-Break Space » qui selon la manière dont il est codé
permet de déterminer dans quel mode on se trouve :
◼ FF FE en little endian ;
◼ FE FF en big endian.
Le codage des textes

Le codage UNICODE
L’UTF-32
◼ L’UTF-32 qui consiste à transformer le code des caractères
de la table UCS en un ou plusieurs valeurs codées sur 32
bits a aussi été définie.

◼ Cependant ce code est peu utilisé car il est « coûteux » : il


faut occupe 4 octets en mémoire alors que 2 octets sont
suffisant pour les caractères du plan multilingue de base.

◼ Il peu devenir utile pour manipuler des caractères se


trouvant en dehors du PMB comme les hiéroglyphes par
exemple.

Vous aimerez peut-être aussi