Représentation de l'Information

 

I : Définitions *

II : Les principaux codes *

II.1 : Numération *

II.1.a : Principe *

II.1.b : La base 2 *

II.1.c : La base 16 *

II.1.d : la base 10 *

II.1.e : la base 8 *

II.2 : Code non numéraires *

II.2.a : Code BCD *

II.2.b : Code ASCII *

III : Format d’un code *

IV : Transcodage *

IV.1 : Binaire à Décimal. *

IV.2 : Décimal à Binaire *

IV.2.a : Méthode par pesées *

IV.2.b : Méthode par divisions entières *

IV-3 : Binaire ß à Hexadécimal *

IV-4 : Binaire ß à Octal *

IV-5 : Décimal ß à Hexadécimal *

III : Représentation machine des nombres *

III.1 : Entiers naturels *

III.2 : Entiers relatifs *

III.3 : Nombres réels *

 

 

I : Définitions

Information : toute caractéristique d’un être ou d’un phénomène donné. Par exemple :

Etudiant : nom, âge, n°INSEE…

Gaz : température, pression…

Une information peut être de nature numérique, alphanumérique…

Code : convention de représentation de l’information.

Nom d’un étudiant : codé avec un nombre variable de caractères de l’alphabet latin.

Numéro de téléphone : codé avec 10 chiffres décimaux.

Informatique : technique du traitement automatique de l’information (Larousse).

 

II : Les principaux codes

 

II.1 : Numération

II.1.a : Principe

On choisit une base B. Un nombre est alors représenté dans cette base à l’aide de B symboles distincts, appelés chiffres ou digits en anglais, et de leur position d’écriture, appelé poids. Par exemple, en base 10 (B=10), les symboles utilisés sont 0,1,2,3,4,5,6,7,8,9. Pour représenter un nombre dans cette base, par exemple l’année en cours, on écrit :

1998, ce qui signifie 1*1000+9*100+9*10+8*1. On voit que le chiffre le plus à droite est affligé d’un poids 0 (il est multiplié par 1), son voisin de gauche d’un poids 1 (il est multiplié par 10) etc…

Lorsqu’on écrit 1998, on écrit uniquement les chiffres et pas les poids, ceux-ci étant implicites. Il convient normalement de préciser la base, par exemple (1998)10 pour " mille neuf cent quatre-vingt dix-huit en base 10 ". Le codage en base 10 étant utilisé dans la vie courante, on ne précise pas la base et elle est, elle aussi, implicite.

II.1.b : La base 2

Appelé également code binaire naturel, la numération en base 2 est particulièrement adaptée à l’informatique (à cause de l’électronique des ordinateurs).

Dans ce code, B=2, les chiffres sont 0 et 1. Ils sont appelés bits (binary digit). Un nombre s’écrit donc :

(A)2 = a3a2a1a0. Sa valeur est : avec B=2.

Le bit le plus à gauche est appelé MSB (Most Significant Bit = bit le + significatif) ou bit de poids fort, le plus à droite LSB (Less Significant Bit = bit le – significatif) ou bit de poids faible.

En général les nombres binaires sont notés :

%10010010 (notation Motorola) , 101100100b (notation Intel), (100001101)2.

Cette base est très utile en informatique car les ordinateurs sont construits avec des composants logiques, ne présentant que des états vrais (1) ou faux (0).

Son principal défaut est sa faible lisibilité, et la taille des nombres binaires.

 

II.1.c : La base 16

Ce code est appelé code hexadécimal. Ici B=16, les symboles utilisés sont les chiffres décimaux plus les six lettres A,B,C,D,E,F.

Son principal intérêt est de palier à la faible lisibilité du code binaire.

Le nombre hexadécimaux sont en général notés :

$A360 (notation Motorola) , 0F50h (notation Intel), (1A3E)16

II.1.d : la base 10

Code décimal : code couramment utilisé. Peu adapté à l’informatique, car 10 n’est pas une puissance de 2.

II.1.e : la base 8

Code octal : peu utilisé. Les chiffres utilisés sont 0,1,2,3,4,5,6,7. Il est noté :

@012 (notation Motorola) , 126o (notation Intel) , (90)8

 

II.2 : Code non numéraires

Ces codes sont soit non numériques, soit numérique sans notion de position ni de base.

II.2.a : Code BCD

Binary Coded Decimal, décimal codé binaire.

Chaque chiffre décimal est codé en binaire, sur 4 bits :

1998 =

1

9

9

8

BCD : 0001 1001 1001 1000

0001

1001

1001

1000

Binaire : 0111 1100 1110

 

On remarque le code BCD est totalement différent du code binaire naturel.

Ce code est très utilisé dans les afficheurs digitaux et les calculs financiers.

II.2.b : Code ASCII

American Standard Code for Information Interchange : code américain standard pour l’échange d’informations.

C’est un code alphanumérique, qui code en binaire sur 7 bits les lettres de l’alphabet (minuscules et majuscules), les chiffres décimaux, les symboles utilisés sur les ordinateurs plus quelques caractères de contrôle. (table ASCII en annexe).

Son codage sur 7 bits lui donne 128 valeurs distinctes, ce qui est insuffisant à coder tous les symboles européens (accents, etc…)

Il est donc apparu des codes dits ASCII étendu, codés sur 8 bits (256 valeurs). Les codes étendus, de 128 à 255, sont attribués aux différents jeux de caractères des constructeurs informatiques et développeurs de logiciels. Souvent, ces codes étendus dépendent d’une langue ou ensemble de langue (code latin par ex.), ou différent d’un constructeur à l’autre (IBM/Apple par ex…) ou d’un système d’exploitation à l’autre (DOS/Windows). La standardisation générale n’est effective qu’avec le code ASCII.

II.2.c : Code UNICODE

Compte tenu de l’extension mondiale de l’informatique, les organismes de normalisation ISO ont créé un code à 16 bits, pouvant donc représenter 65536 caractères. Les 128 premiers sont bien sur commun avec le code ASCII, et sur les suivants ils ont pu coder les différentes " pages " de codes aussi variées que Latin, Tamoul (Inde), Cyrillique (Grêce, Russie), Japonais, Chinois... il devient donc possible de réaliser des versions internationales d’un même programme, sans devoir s’assurer de posséder la bonne police de caractères.

III : Format d’un code

La plupart du temps, on a besoin de savoir combien de chiffres (digits) sont nécessaires pour coder une information. Bien que dans la vie courante, on n’a pas besoin de connaître le format des nombres en base 10 (format illimité), en technologie les mémoires, circuits logiques, circuits de calcul ont des capacités limitées, on a donc besoin d’un format limité.

Le format conditionne la capacité d’un code. En base 2, un format de 4 bits permet de code 24=16 valeurs distinctes. On peut donc, par exemple, coder les entiers de 0 à 15. Inversement, si l’on veut, par exemple, 1000 valeurs en binaire, on a besoin de 10 bits (210=1024). En hexadécimal, 3 chiffres suffiraient (163=4096) et 4 en octal. On utilise 3 chiffres en décimal.

Bien entendu, il convient de ne pas utiliser un format trop important (par ex, 80 bits) si les informations que l’on veut coder son peu nombreuses (ex, code ASCII, 128 valeurs).

 

IV : Transcodage

= Passage d’un code à l’autre.

Le plus couramment, on aura besoin de passer du binaire au décimal (et vice-versa).

 

IV.1 : Binaire à Décimal.

Le décimal étant la " base courante ", le passage est simple :

Par exemple, %1011 = 1*23+0*22+1*21+1*20=1*8+0*4+1*2+1*1=8+2+1=11.

 

IV.2 : Décimal à Binaire

Il existe plusieurs méthodes. Notons A le nombre codé en base 10 et B le nombre codé en base 2. Les chiffres utilisés pour A sont les ai, ceux pour B les bj . On a :

Le format de A (n chiffres) est bien entendu différent de celui de B (p chiffres).

Le problème est de déterminer les bj, connaissant les ai.

IV.2.a : Méthode par pesées

Principe : on cherche la + grande puissance de 2 dans le nombre, puis la plus grande dans la différence, etc…

Par exemple, 43 (base 10) peut se " peser " comme suit :

25=32<43 ; 26=64>43, donc 43=25+(43-32)=25+11.

24=16>11 ; 2 3=8<11, donc 43=25+23+(43-32-8)=25+23+3.

22=4>3 ; 21=2<3 , donc 43=25+23+21+(43-32-8-2)= 25+23+21+1.

20=1, on a donc le nombre en entier :

43=1*25+0*24+1*23+0*22+1*21+1*20 = %101011

IV.2.b : Méthode par divisions entières

Le principe est celui de l’algorithme de Horner et peut être appliqué à la conversion de n’importe quelle base (2 mais aussi 16,8,et pourquoi pas 3,11….).

Tout polynôme P écrit de manière générale P=an-1.xn-1+…+a0.x0 peut s’écrire :

P=(….(an-1.x+an-2).x+an-3)….).x+a0.

Par exemple, pour n=3,

Il suffit donc d’appliquer une division entière par B (la base) qui donnera :

Par exemple, pour un nombre codé sur 4 bits :

N=a323+a222+a121+a0 = ((a3.2+a2).2+a1).2+a0

La première division entière par 2 donne : reste = a0, quotient (a3.2+a2).2+a1

La deuxième division entière par 2 donne : reste = a1, quotient a3.2+a2

La troisième division entière par 2 donne : reste = a2, quotient a3.

On a pu ainsi déterminer les 4 bits de N.

Pour déterminer les n bits d’un nombre binaire, il suffit d’avoir les restes de n divisions entières successives par 2 de N.

 

IV-3 : Binaire ß à Hexadécimal

On remarque que 16=24.

Il suffit donc de " découper " le nombre binaire par tranche de 4 bits, de convertir chaque groupe de 4 bits en base 16, pour avoir chaque chiffre hexa.

Exemple :

(3247)10 = %1100 1010 1111

On a %1100=12=$C, %1010=10=$A, %1111=15=$F.

Donc 3247 = $CAF.

Le passage inverse suit le même principe.

 

IV-4 : Binaire ß à Octal

Même méthode que pour l’hexadécimal, on remarquant que 8=23.

 

IV-5 : Décimal ß à Hexadécimal

Il suffit de passer du décimal au binaire, puis du binaire à l’hexa.

On peut aussi appliquer la méthode des divisions successives à la base 16.

Pour le passage inverse, il suffit d’appliquer la formule :

 

III : Représentation machine des nombres

Pour effectuer des calculs mathématiques, on utilise des nombres de nature diverses :

 

Leur représentation machine suit des règles.

 

III.1 : Entiers naturels

Dits également entiers non signés. Codés en base 2 sur n bits, ils ont une étendue de 0 à 2n-1. Par exemple, avec 4 bits, de 0 à 15 ; avec 16 bits, de 0 à 65535.

On représente tous les bits du format, même s’il y a des 0 à droite. (cela permet d’indiquer le format) On sépare habituellement les bits par groupe de 4 pour simplifier la lecture et la conversion en hexa.

Exemple :

10 = %1010 sur 4 bits.

535 = %0000 0010 0001 0111 sur 16 bits.

 

III.2 : Entiers relatifs

Dits entiers signés.

Les entiers positifs sont codés de la même manière que les naturels.

Pour les nombres négatifs, une convention s’impose. Il faut pouvoir coder le signe. On utilise le MSB pour cela (bit de poids le + fort). Il sera donc à 0 pour un nombre positif, à 1 pour un nombre négatif. On voit donc qu’1 des n bits n'est pas utilisé pour coder le nombre, l'étendue des nombres positifs est donc réduite. On code les nombres positifs de 0 à 2n-1-1. Par exemple, avec 4 bits, de 0 à 7.

Comment à présent traiter les nombres négatifs ? On pourrait imaginer coder la valeur absolue du nombre avec les n-1 bits de poids faible. Cela donnerait:

Sur 4 bils: 5=%0101, donc -5=%l l01.

On remarque un problème d’arithmétique: 5-5+5+(-5)=%0101 +% 1101 =%1 0010

Or le nombre %0010 dépasse la capacité (il a besoin de 5 bits). De plus, il n'est en aucun cas égal a 0. Ce système de codage est donc mal adapté. Il faudrait en effet que x+(-x) soit nul !

Pour cela, on code avec les n-1 bits faibles le complément restreint de la valeur absolue du nombre.

Le complément d'un nombre de n bits le nombre code par les compléments bit à bit. Par exemple:

Le complément sur 4 bits de 5=%0101 est %1010.

Le complément vrai est le complément auquel on ajoute 1.

Le complément restreint sur 4 bits de 5 est: %1111-%0101+%0001=%1011.

Donc. –5=%1011. On remarque que %0101+%1011=%0000, la règle mathématique –5+5=0 est respectée !

On nombre entier relatif est codé en binaire de la façon suivante :

Son signe est codé par le MSB : 1 pour négatif, 0 pour positif.

Sa valeur absolue est codée en binaire naturel pour un nombre positif, par son complément restreint pour un nombre négatif.

L’étendue de ce code est : de –2n-1 à 2n-1-1. On a bien 2n valeurs distinctes.

Exemple sur 4 bits (16 valeurs) :

X

Valeur absolue

Complément

Complément vrai

+7

0111

   

+6

0110

   

+5

0101

   

+4

0100

   

+3

0011

   

+2

0010

   

+1

0001

   

+0

0000

   

-0

1000

1111

0000

-1

1001

1110

1111

-2

1010

1101

1110

-3

1011

1100

1101

-4

1100

1011

1100

-5

1101

1010

1011

-6

1110

1001

1010

-7

1111

1000

1001

-8

Impossible

Impossible

1000

 

 

III.3 : Nombres réels

Il existe deux modes possibles : à virgule fixe et à virgule flottante.

Le mode à virgule fixe est en fait similaire aux entiers, puisqu’il revient à fixer le nombre de chiffres avant et après la virgule (un simple décalage ramène aux entiers relatifs).

Le mode à virgule flottante est plus intéressant :

Rappel : notation scientifique : tous les nombres réels peuvent s’écrire sous la forme suivante :

X = ± M*Bc

M s’appelle la mantisse, C la caractéristique ou l’exposant, et B est la base.

Par exemple, 1789 = 1,789*103.

Normalisation : on fixe une condition sur la mantisse pour ne représenter que sa partie fractionnaire (après la virgule) :

En décimal on a 0,1£M<1 ; en binaire 1£M<2 .

Le codage machine est donc le suivant en base 2 :

 

bit signe

k bits de c codes cv

p bits partie fractionnaire de m

Général

an-1

an-2……………………….an-1-k

an-2-k……….………………a0

32 bits

a31

a30……………………….….a23

a22….…….……………...…a0

(exemple avec 8 bits d’exposant et 23 bits de mantisse).

La capacité de ce code est :

Ce qui donne, pour 32 bits (8 bits exposant, 23 bits mantisse), de 0,3.10-38 à 2,538.

La précision est de

Ce qui donne, par exemple pour une mantisse 23 bits, une précision d’environ 10-7 (7 chiffres après la virgule).

Il existe des normes pour la représentation machine des " flottants " :

 

Format

C

M

Etendue

Précision

Simple

32 bits

8

23

De 0,3.10-38 à 2,5.1038

10-7

Double

64 bits

11

52

De 0,5.10-308 à 2.10308

10-16

Double étendu

80 bits

15

64

De 0,5.10-4930 à 2.104930

10-19