Représentation des données

Introduction

Les ordinateurs (et plus généralement tous les systèmes numériques) traitent des signaux représentant des données discrètes, c'est-à-dire n'ayant qu'un nombre fini de valeurs possibles. Ils sont généralement binaires, c'est-à-dire que les signaux élémentaires ont deux valeurs possibles. Comme les ordinateurs non binaires n'ont qu'un intérêt historique, nous les ignorerons dans la suite.

Un signal pouvant avoir deux valeurs est appelé un bit qui est l'abréviation de binary digit (chiffre binaire). Nous noterons ces deux états L (low) et H (high) rappelant ainsi que dans les systèmes électroniques ils correspondent souvent à une tension basse ou élevée.

Toute information manipulée dans un ordinateur doit donc être représentée par une suite de bits. Avec N bits on peut représenter 2N valeurs possibles. Donc, si une donnée a N valeurs possibles, il faut au minimum log2 N bits pour la représenter.

On appelle la correspondance entre les bits et les valeurs à représenter un codage. Pour un même type de données, plusieurs codages sont possibles. Ce document présente certains codages courant pour une série de types de donnée simples.

Les informations ayant généralement plus de deux valeurs possibles, les ordinateurs manipulent donc essentiellement des suites de bits (beaucoup n'ont même pas d'instruction pour manipuler des bits isolés).

Un byte est la plus petite suite de bits qu'un ordinateur puisse manipuler. Le nombre de bits dans un byte varie de système à système mais comme depuis le milieu des années 70, les ordinateurs ont des bytes de 8 bits, le mot byte est devenu aussi un synonyme de suite de 8 bits. Ce n'a pas toujours été le cas: il y a eu des ordinateurs avec des bytes de 6, 7 et 9 bits.

Un mot est la suite de bits qu'un ordinateur manipule le plus aisément. Comme pour le byte, le nombre de bits dans un mot varie suivant les systèmes. Quand le mot a 16 bits, on dit que c'est un ordinateur 16 bits. Le mot est généralement un nombre entier de bytes. Les ordinateurs actuels ont d'habitude des mots de 32 bits mais il y a eu des ordinateurs avec des mots de 8, 16, 18 et 36 bits et les ordinateurs avec des mots de 64 bits se répandent.

Il faut noter que l'unité d'adressage n'est pas nécessairement le byte. Un ordinateur peut ne permettre l'adressage que de ses mots (de 36 bits) tout en ayant des instructions pour manipuler des bytes de 9 bits.

De même, à cause du glissement de sens de plus petite unité adressable vers 8 bits, on évitera de parler de byte au sujet d'ordinateurs récents ne pouvant adresser que des mots de 32 bits.

Donnée booléenne

C'est la donnée la plus simple que l'on puisse manipuler. Elle n'a que deux états, faux et vrai. Elle est donc encodable sur un bit. Généralement faux est encodé par L et vrai par H, mais parfois l'inverse est utilisé.

Comme les ordinateurs ne peuvent généralement manipuler des bits isolés qu'avec difficulté, on code souvent les données booléennes sur un mot. Plusieurs codages sont utilisés: on peut ignorer la valeur de tous les bits sauf un, ou bien coder faux par tous les bits à L et vrai par n'importe quelle combinaison ayant au moins un bit à H.

Nombres entiers naturels

Comme il y a une infinité de valeurs à représenter, il faudrait une infinité de bits. Comme on ne dispose pas d'autant de bits, deux méthodes sont employées: soit on fixe le nombre de bits et on limite ainsi les nombres représentables, soit on utilise un codage avec un nombre variable de bits. Nous ne traiterons ici que de la première méthode.

Notez que les entiers naturels sont appelés entiers non signés dans le jargon des informaticiens.

Représentation binaire

La première méthode, c'est écrire les nombres en base deux avec le chiffre 1 représenté par H et le chiffre 0 représenté par L.

Cette représentation est tellement utilisée que bien souvent on l'utilise pour noter toute chaines de bits, qu'elle représente un nombre ou pas. On va même plus loin et on utilise d'autre bases (huit, seize et même dix). On écrira donc 138, 8Ah, 212o ou 10001001b quand en fait on veut dire la chaine de bits HLLLHLHL. Quand on le fait, on a tendence à écrire tous les chiffres, même les 0 initiaux qu'on ne note habituellement pas quand on désigne une valeur.

Code gray

La représentation binaire est peut-être la plus répandue, mais d'autres existent. Le code gray est un codage qui a l'avantage que deux nombres voisins ne diffèrent que par la valeur d'un bit. La table suivante donne le code gray pour les nombres représentés sur 3 bits.

LLL 0 HHL 4
LLH 1 HHH 5
LHH 2 HHL 6
LHL 3 HLL 7

Les code gray sont généralement utilisés quand on a des capteurs qui lisent individuellement les différents bits de la valeur mesurée. A l'endroit d'une transition, ces capteurs donnent une valeur aléatoire, mais comme un seul d'entre eux a une transation à la fois, la mesure n'est pas influencée. Par exemple s'il faut mesurer 1,5, avec le codage ci-dessus seul le deuxième bit change et on mesurera 1 ou 2. Si par compte on avait des valeurs en représentation binaire (ou 1 s'écrit LH et 2 HL), 2 bits changeraient de valeurs et on pourrait mesurer 0 (LL), 1 (LH), 2 (HL) ou 3 (HH).

BCD

Le codage BCD (Binary Coded Decimal ou décimal encodé en binaire) est un codage qui est facilement convertible en notation décimale.

La méthode la plus simple consiste à encoder les nombres un chiffre décimal par byte ou par mot, le chiffre étant lui-même encodé en binaire.

Comme il suffit de 4 bits pour encoder un chiffre décimal, cette méthode fait perdre beaucoup de place. On place donc parfois deux chiffres décimaux par byte: celui de poids faible dans les 4 bits de poids faible du byte, celui de poids fort dans les 4 bits de poids fort. On parle alors de BCD compacté.

En BCD compacté, 1283 est représenté par LLLH LLHL HLLL LLHH.

Nombres entiers

Comme il y a une infinité de valeurs à représenter, il faudrait une infinité de bits. Comme on ne dispose pas d'autant de bits, deux méthodes sont employées: soit on fixe le nombre de bits et on limite ainsi les nombres représentables, soit on utilise un codage avec un nombre variable de bits. Nous ne traiterons ici que de la première méthode.

Notez que les entiers sont appelés entiers signés dans le jargon des informaticiens.

Grandeur et signe

La manière la plus simple consiste à utiliser un bit pour représenter le signe (généralement le bit est à H pour indiquer un nombre négatif) en complément d'une représentation d'entiers naturels.

On remarque que la valeur zéro a alors deux représentations possibles. Le zéro négatif est parfois autorisé, parfois interdit.

Complément à un

Cette représentation est basée sur la représentation binaire des entiers naturels. Plutôt qu'avoir un bit de signe, on complémente tous les bits pour les entiers négatifs.

Dans cette représentation, le bit le plus significatif est mis à H pour les nombres négatifs, on l'appelle donc aussi le bit de signe.

Dans cette représentation, le zéro a à nouveau deux représentations possibles. Le zéro négatif est aussi parfois autorisé et parfois interdit.

Pour des informations sur une machine fonctionnant en complément à un, voir ici

Complément à deux

C'est à nouveau une représentation basée sur la représentation binaire des entiers naturels. Remarquons d'abord que dans cette représentation, à chaque nombre correspond un autre nombre qui additionné au premier donne 0 si on ignore le report sortant. C'est ce nombre qui est utilisé comme complément du premier.

On peut aussi optenir le complément d'un nombre en complémentant chacun des bits et en additionnant 1 au résultat.

Dans cette représentation, le bit le plus significatif est mis à H pour les nombres négatifs, on l'appelle donc aussi le bit de signe.

Dans cette représentation, le zéro a une seule représentation possible. Mais il existe un nombre négatif (le plus grand en valeur absolue représentable) dont la valeur absolue n'est pas représentable.

Cette représentation a un certain nombre d'avantages qui facilite la réalisation des circuits électroniques. C'est donc la représentation la plus communément utilisée.

Représentation biaisée

Dans cette représentation, on additionne un nombre, le biais, à l'entier à représenter et on représente le nombre naturel correspondant avec une des représentations de nombres naturels.

Il n'y a pas de bits de signe dans cette représentation, et il y a une seule représentation pour zéro.

Cette représentation est la seule qui permette de représenter un sous-ensemble non symétrique (ou quasiment symétrique) des entiers.

Exemples

Voici une série de nombres représentés sur 8 bits dans les méthodes décrites ci-dessus. Pour la représentation en grandeur et signe et la représentation biaisée, la méthode de représentation des entiers naturels est la représentation binaire. Le biais pour la représentation biaisée est 127.

Valeur en décimal Grandeur et signe Complément à un Complément à deux Représentation biaisée
0 L LLL LLLL LLLL LLLL LLLL LLLL LHHH HHHH
-0 H LLL LLLL HHHH HHHH N/A N/A
10 L LLL HLHL LLLL HLHL LLLL HLHL HLLL HLLH
-10 H LLL HLHL HHHH LHLH HHHH LHHL LHHH LHLH
127 L HHH HHHH LHHH HHHH LHHH HHHH HHHH HHHL
-127 H HHH HHHH HLLL LLLL HLLL LLLH LLLL LLLL
128 N/A N/A N/A HHHH HHHH
-128 N/A N/A HLLL LLLL N/A