Chapitre 4

Transcription

Chapitre 4
CHAPITRE 4
REPRÉSENTATION DE L’INFORMATION
La plupart des systèmes, autant mécaniques qu'électroniques, ne peuvent prendre que deux
états stables, que l’on note 0 et 1; ainsi, les circuits électroniques conduisent ou ne conduisent
pas et les impulsions électriques sont présentes ou absentes. Le système de numération à
deux symboles (0 et 1) ou système binaire est mieux adapté aux ordinateurs que le système
décimal qui comporte dix symboles. En outre, chaque chiffre, lettre, mot, instruction ou élément
graphique peut être codé dans le système binaire. Le système binaire est certes la
représentation de l’information compréhensible par l’ordinateur, mais il est, dans certains cas,
moins pratique.
Le choix d’un système de représentation pour coder un ensemble de symboles doit satisfaire à
deux critères importants. Premièrement, le codage de ces symboles doit être univoque : deux
symboles différents doivent avoir deux représentations différentes. Deuxièmement, la
représentation doit être la plus compacte possible afin d’occuper un minimum d’espace
mémoire. Ces deux critères ont guidé le choix du standard ASCII et du code EBCDIC.
Aujourd’hui, un nouveau standard de codage de caractères a vu le jour : le standard UNICODE;
c’est un système ouvert, rassemblant, en un seul système, tous les symboles connus à ce jour,
incluant les symboles des langues asiatiques.
4.1
Les bases de numération
La numération dans un système de base N comprend exactement N chiffres allant de 0 à N – 1.
La base décimale que nous connaissons tous comprend 10 chiffres (0 à 9). Lorsque la base N
dépasse le nombre de chiffres (10), on se sert des lettres de l’alphabet; par exemple, la base de
numération hexadécimale comprend les symboles suivants : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C,
D, E et F. Bien entendu, A, B, C, D, E et F représentent les nombres décimaux 10, 11, 12, 13,
14 et 15 respectivement.
La représentation polynomiale d’un nombre M dans une base de numération N est la suivante :
où
M = AkNk + Ak-1Nk-1 + … + A1N1 + A0
0 <= Ak < N
De façon plus compacte, nous écrivons :
M = (AkA k-1…A1A0)N
4.2
Le rang ou le poids
Le rang d'un chiffre est sa position dans le nombre en partant de la droite. On parle de poids
fort pour les chiffres situés vers la gauche et de poids faible pour les chiffres situés vers la
droite. Le poids le plus fort est le chiffre le plus à gauche, alors que le poids le plus faible est le
chiffre le plus à droite.
© Télé-université, 2002
INF 1130 Comprendre l’ordinateur :
organisation, exploitation et programmation
CHAPITRE 4 : REPRÉSENTATION DE L’INFORMATION
4.3
2
La conversion
Tout nombre M exprimé dans une base P peut être représenté dans une base N. Comment
peut-on, par exemple, convertir le nombre 1253 exprimé en base 7 dans la base 13? Il n’existe
pas de formule évidente permettant de résoudre cette conversion avec la représentation
polynomiale. La démarche la plus naturelle, puisque la base 10 nous est familière, est de
convertir le nombre 1253, de la base 7 à la base 10, puis de la base 10 à la base 13, par des
divisions successives. En privilégiant cette approche, la représentation polynomiale ci-dessus
peut être réécrite comme suit :
M = A0 + N(A1 + N(A2 + N(….)))
À partir de cette nouvelle relation, on devine que les coefficients Ak de la représentation de M
dans la base N peuvent être déduits par l’algorithme suivant :
Si M < N, alors
M vaut M dans la base N
Si M > N, alors
Ak = partie entière [M/Nk-1 modulo N]
k-1
Si (M \ N
< N), alors
k-1
Ak+1 = partie entière (M/N )
(i)
(ii)
La procédure prend fin.
Sinon, répéter l’étape (i).
Dans cet algorithme le symbole « \ » fait référence à la division entière. Par exemple, la division
entière de 13 par 5 vaut 2. On se limite à la partie entière de la division de 13 par 5. Le reste de
cette division est en fait le modulo de 13 par 5, soit 3.
Exemple
À l’aide de la représentation polynomiale, on exprime (1253)7 en base 10 comme suit :
(1253)7 = (3*70) + (5*71) + (2*72) + (1*73) = 479, en base 10.
Au moyen de l’algorithme, on déduit la représentation de 479 dans la base 13.
A0 = 479 modulo 13 = 11, soit B en base 13
479 \ 13 = 36 > 13, on continue
A1 = (479 \ 13) modulo 13 = 10, soit A en base 13
479 \ 169 = 2 < 13, alors
A2 = 2
La représentation de (1253)7 est 2AB, en base 13.
4.3.1
Les principaux systèmes de numération
Outre la numération décimale, on utilise souvent le système de numération à base 2 ou
système binaire, le système à base 8 ou octal et le système à base 16 ou hexadécimal.
Système binaire ou à base 2
Dans la numération binaire, les informations sont codées en utilisant un seul bit qui peut être 0
ou 1. Si l’on se réfère à l’algorithme ci-dessus, le nombre décimal 150 s’écrit en binaire
(10010110)2.
© Télé-université, 2002
INF 1130 Comprendre l’ordinateur :
organisation, exploitation et programmation
CHAPITRE 4 : REPRÉSENTATION DE L’INFORMATION
3
Système octal ou à base 8
Le système de numération octale utilise 8 symboles (0 à 7) pour représenter les informations.
Le système octal est souvent utilisé comme représentation simple du système binaire. Le
nombre décimal 150 s’écrit 226, dans la base 8; il suffit d’appliquer la méthode de conversion
expliquée ci-dessus.
Système hexadécimal ou à base 16
Les nombres binaires étant de plus en plus longs, il est apparu nécessaire d’utiliser un codage
offrant plus de flexibilité. De là est née l’idée du codage en hexadécimal. En effet, pour bien
comprendre les notions d’adresses de segments et de décalage (offset) dans l’organisation de
la mémoire vive d’un ordinateur et leurs effets sur l’architecture d’un système, il est important de
maîtriser la représentation des nombres en hexadécimal (HEXA). L’hexadécimal est un
système de numération à base 16, comparable aux systèmes décimal (base 10) et binaire
(base 2). Dans le système hexadécimal, on utilise les chiffres de 0 à 9 et 6 caractères (A à F)
qui correspondent aux nombres décimaux de 10 à 15. Lorsqu’on lit un nombre du système
décimal de droite à gauche, la valeur de chacune des positions s’accroît d’un facteur 10. En
HEXA, la valeur de chaque position successive s’accroît d’un facteur 16.
Base
Binaire
Nombre de bits
pour le codage
1
Chiffres de la numération
0 et 1
Octale
3
0, 1, 2, 3, 4, 5, 6 et 7
Hexadécimale
4
0, 1, 2, 3, 4, 5, 6, 7
8, 9, A, B, C, D, E et F
Voyons deux exemples de passage d’une base à une autre.
a)
Exprimons 2F9 (base hexadécimale) dans la base binaire.
Lorsque les bases en jeu sont les bases binaire, octale et hexadécimale, il est souvent plus
simple de passer par la base binaire. En passant par la base binaire, on évite les divisions
successives de l’algorithme ci-dessus. Cette méthode, dite par regroupements, est valide pour
les bases qui sont des puissances de 2. C'est le cas de la base 8 (8 = 23) et de la base 16
(16 = 24). Dans le cas d'un passage du binaire à la base 8, les bits sont regroupés par 3, et
ensuite décodés. Au besoin, nous pouvons ajouter des 0 à gauche. Pour passer à la base 16
(hexadécimal), nous appliquons le même procédé en regroupant cette fois les bits par 4.
Pour représenter 2F9 en binaire, on procède en trois étapes. On exprime d’abord chaque chiffre
de la représentation hexadécimale en binaire. Puis, on regroupe le code obtenu en un seul. Et,
enfin, on supprime les zéros devant le dernier chiffre significatif à gauche.
2
F
9
0010
1111
1001
Alors, 2F9 vaut 0010 1111 1001 en binaire, soit 1011111001, en supprimant les zéros non
significatifs.
© Télé-université, 2002
INF 1130 Comprendre l’ordinateur :
organisation, exploitation et programmation
CHAPITRE 4 : REPRÉSENTATION DE L’INFORMATION
b)
4
Exprimons 2F9 de la base hexadécimale vers la base octale.
On convertit d’abord 2F9 en binaire. Puis, on regroupe les chiffres par bloc de 3 de droite à
gauche.
2
F
9
0010
1111
1001
Regroupement par trois, puisque la base octale est codée sur 3 bits :
001
011
111
001
1
3
7
1
Alors, 2F9 en hexadécimal vaut 1371 en octal.
4.4
Les systèmes de codage de textes
Un système de représentation comprend un code pour représenter chaque caractère et une
stratégie d’encodage des séquences de caractères. Dans cette section, nous nous limiterons
aux aspects de codage.
L’ensemble des symboles à coder comprend les lettres de l’alphabet (minuscules et
majuscules), les nombres (0 à 9), les signes de ponctuation, les symboles arithmétiques et les
symboles spéciaux utilisés dans les langues anglaise, française, italienne, espagnole (espace,
symboles d’échappement, tabulation, fin de ligne, $, @, \, ~, etc.).
Cet ensemble alphanumérique contient environ de 100 à 150 symboles. Un octet est la taille
minimum d’une zone mémoire. De plus, comme 8 bits permettent 256 combinaisons différentes,
c’est donc naturellement que les systèmes de représentation de caractères EBCDIC et ASCII
ont adopté une représentation sur un octet (8 bits). Ces codages binaires ont été créés afin de
normaliser les communications entre les systèmes numériques.
4.5
Le standard EBCDIC
Le codage EBCDIC (extended binary coded decimal interchange code) est utilisé sur les gros
ordinateurs ou systèmes d'IBM (mainframes). Il existe en six versions parfaitement
incompatibles entre elles et il y manque plusieurs signes, absolument nécessaires dans
beaucoup de langues modernes. De plus, les caractères manquants varient d'une version à
l'autre. La compagnie IBM est accusée d’avoir fait de ce codage une tactique pour contrôler les
utilisateurs.
4.6
Le standard ASCII
Le système de codage des caractères ASCII (american standard code for information
interchange) est le plus répandu. Il en existe plusieurs variantes et certains symboles spéciaux
varient d’une région à l’autre. La version de base correspond à la variante US-ASCII et
comprend l’ensemble des symboles de la langue anglaise.
Le premier caractère, « l’espace », a le code 32 et le dernier symbole, « le tilde » ( ~ ), occupe
le code 126. Le code est incrémenté dans l’ordre de la liste ci-dessus. Les valeurs des codes de
0 à 31 et supérieures à 127 ne correspondent pas à des symboles imprimables; elles sont
réservées aux symboles de contrôle ou d’échappement.
© Télé-université, 2002
INF 1130 Comprendre l’ordinateur :
organisation, exploitation et programmation
CHAPITRE 4 : REPRÉSENTATION DE L’INFORMATION
5
!
"
#
$
%
&
‘
(
)
*
+
,
-
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
`
A
b
c
d
e
f
G
h
i
j
K
l
m
n
o
p
Q
r
s
t
u
v
W
x
y
z
{
|
}
~
La multiplicité des variantes, dites nationales, pose un problème de compatibilité entre les
systèmes. Le tableau suivant donne une liste non exhaustive de quelques variantes.
Code en décimal
Symbole
Variante nationale
35
#
#
36
$
¤
64
@
É
91
£
Ù
§
Ä
[
Ä Æ
°
92
\
Ö Ø
ç
Ñ ½
¥
93
]
Å Ü
§
ê
é
¿
94
^
Ü
95
_
È
96
`
é
ä
µ
ô
ù
123
{
ä æ
é
à
º
124
|
ö
ø
ù
ò
ñ ƒ
125
}
å
ü
è
ç
¼
126
~
ü
¯
β
¨
û
à
|
î
¨
Ì
´
À cause des variantes nationales du codage ASCII, certains symboles sont plus à risque que
d’autres. En effet, les caractères de l’alphabet, les nombres (0 à 9) et les symboles suivants
seront généralement interprétés correctement :
! " % & ‘ ( ) * + , - . / : ; < = > ?
Par exemple, le symbole « < » dans un document HTML sera interprété comme le début d’un
marquage, plutôt que comme « inférieur à ». Dans ce langage, le problème de portabilité entre
les systèmes est résolu en indiquant dans l’entête du document le système de codage utilisé.
Cette même incompatibilité conduit souvent au mauvais décodage des caractères accentués
des courriers électroniques.
4.7
La famille de standards ISO 8859
La famille de standards ISO 8859 est une extension du codage ASCII pour répondre aux
spécificités de certaines régions. Par exemple, le système de codage ISO 8859-1 ou ISOLatin 1 comprend, en plus des symboles ASCII, un ensemble de caractères accentués et
d’autres symboles utilisés en Europe de l’Ouest. Les symboles correspondant aux
© Télé-université, 2002
INF 1130 Comprendre l’ordinateur :
organisation, exploitation et programmation
CHAPITRE 4 : REPRÉSENTATION DE L’INFORMATION
6
symboles ASCII conservent le même code et les symboles supplémentaires sont codés dans
l’espace de 160 à 255; ce sont :
¡
¢
£
¤
¥
¦
§
¨
©
ª
«
¬
-
®
¯
°
±
²
³
´
µ
¶
·
¸
¹
º
»
¼
½
¾
¿
À
Á
Â
Ã
Ä
Å
Æ
Ç
È
É
Ê
Ë
Ì
Í
Î
Ï
Ð
Ñ
Ò
Ó
Ô
Õ
Ö
×
Ø
Ù
Ú
Û
Ü
Ý
Þ
ß
à
Á
â
ã
ä
Å
Æ
ç
È
é
ê
ë
ì
í
î
ï
ð
Ñ
ò
ó
ô
Õ
Ö
÷
Ø
ù
ú
û
ü
ý
þ
ÿ
Le tableau ci-dessous indique quelques variantes du codage ISO 8859 existant.
Standard ISO 8859-x
Nom de l’alphabet
Caractérisation
1
Latin 1
Europe de l’Ouest
2
Latin 2
Centre et Est de l’Europe
3
Latin 3
Sud de l’Europe
4
Latin 4
Europe du Nord
5
Latin/Cyrillique
Langue slave
6
Arabe
Langue arabe
7
Grec
Langue grecque
8
Hébreu
Langue hébreu
9
Latin 5
Langue turque
10
Latin 6
Nordique (Inuit, Islande)
11
Thaï
Langue thaï
13
Latin 7
Langue balte
14
Latin 8
Langue celtique
Non défini
4.8
Les standards ISO 10646 et UNICODE
Le standard ISO 10646 est un standard international de représentation. Il prend en compte un
ensemble de caractères beaucoup plus vaste, d’où son appellation de jeu de caractères
universel, aussi connu sous l’appellation UCS (universal character set). Pour parvenir à ses
fins, le standard ISO 10646 a adopté une représentation sur 16 bits.
Le standard UNICODE est également un standard 16 bits, dérivé du standard ISO 10646; le
consortium UNICODE en est le dépositaire. À ce jour, nous en sommes à la version
UNICODE 3.2; avec cette dernière version, on voit s’ajouter 1016 nouveaux caractères aux
38887 symboles déjà existants. Des informations supplémentaires se trouvent sur le site de
UNICODE1.
1
[ http://www.unicode.org/reports/tr28/ ]
© Télé-université, 2002
INF 1130 Comprendre l’ordinateur :
organisation, exploitation et programmation
CHAPITRE 4 : REPRÉSENTATION DE L’INFORMATION
7
Résumé
La communication est fortement influencée par le mode de codage de l’information. Avant de
transmettre une information, il faut la coder dans un système de représentation univoque afin
d’éviter toute confusion.
Dans ce chapitre, nous avons vu ce qu’un système de représentation cherche à faire, soit
représenter un ensemble de symboles. Le système décimal que nous connaissons bien ne
convient pas aux ordinateurs. En effet, la technologie des ordinateurs repose sur la position des
micro-interrupteurs qui ne distinguent que deux états : présence ou absence du courant
électrique; cela explique l’utilisation du système binaire pour coder les informations en
informatique. Cependant le système binaire, quoiqu’il soit bien adapté à la représentation de
l’information, n’est pas très pratique pour les calculs : d’où la nécessité d’utiliser d’autres
systèmes, telle la numération octale ou hexadécimale.
Rappelons que le système hexadécimal constitue la base du traitement de l’information pour les
microprocesseurs. Rappelons également qu’il existe aujourd’hui des organismes qui travaillent
sur des standards pour normaliser les communications entre les systèmes numériques : le
standard EBCDIC, le standard ASCII, la famille de standards ISO 8859, la famille de standards
ISO 10646 (ou UCS) et le standard UNICODE.
© Télé-université, 2002
INF 1130 Comprendre l’ordinateur :
organisation, exploitation et programmation