Les ordinateurs, eux, comme on l’a vu, ont un dispositif physique fait pour stocker (de multiples façons) des informations binaires. Alors, lorsqu’on représente une information stockée par un ordinateur, le plus simple est d’utiliser un système de représentation à deux chiffres : les fameux 0 et 1. Mais une fois de plus, je me permets d’insister, le choix du 0 et du 1 est une pure convention, et on aurait pu choisir n’importe quelle autre paire de symboles à leur place.
Dans un ordinateur, le dispositif qui permet de stocker de l’information est donc rudimentaire, bien plus rudimentaire que les mains humaines. Avec des mains humaines, on peut coder dix choses différentes (en fait bien plus, si l’on fait des acrobaties avec ses doigts, mais écartons ce cas). Avec un emplacement d’information d’ordinateur, on est limité à deux choses différentes seulement. Avec une telle information binaire, on ne va pas loin. Voilà pourquoi, dès leur invention, les ordinateurs ont été conçus pour manier ces informations par paquets de 0 et de 1. Et la taille de ces paquets a été fixée à 8 informations binaires.
Une information binaire (symbolisée couramment par 0 ou 1) s’appelle un bit (en anglais... bit).
Un groupe de huit bits s’appelle un octet (en anglais, byte)
Donc, méfiance avec le byte (en abrégé, B majuscule), qui vaut un octet, c'est-à-dire huit bits (en abrégé, b minuscule).
Dans combien d’états différents un octet peut-il se trouver ? Le calcul est assez facile (mais il faut néanmoins savoir le refaire). Chaque bit de l’octet peut occuper deux états. Il y a donc dans un octet :
2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 = 28 = 256 possibilités
Cela signifie qu’un octet peut servir à coder 256 nombres différents : ce peut être la série des nombres entiers de 1 à 256, ou de 0 à 255, ou de –127 à +128. C’est une pure affaire de convention, de choix de codage. Mais ce qui n’est pas affaire de choix, c’est le nombre de possibilités : elles sont 256, pas une de plus, pas une de moins, à cause de ce qu’est, par définition, un octet.
Si l’on veut coder des nombres plus grands que 256, ou des nombres négatifs, ou des nombres décimaux, on va donc être contraint de mobiliser plus d’un octet. Ce n’est pas un problème, et c’est très souvent que les ordinateurs procèdent ainsi.
En effet, avec deux octets, on a 256 x 256 = 65 536 possibilités.
En utilisant trois octets, on passe à 256 x 256 x 256 = 16 777 216 possibilités.
Et ainsi de suite, je ne m’attarderai pas davantage sur les différentes manières de coder les nombres avec des octets. On abordera de nouveau brièvement le sujet un peu plus loin.
Cela implique également qu’un octet peut servir à coder autre chose qu’un nombre : l’octet est très souvent employé pour coder du texte. Il y a 26 lettres dans l’alphabet. Même en comptant différemment les minuscules et les majuscules, et même en y ajoutant les chiffres et les signes de ponctuation, on arrive à un total inférieur à 256. Cela veut dire que pour coder convenablement un texte, le choix d’un caractère par octet est un choix pertinent.
Se pose alors le problème de savoir quel caractère doit être représenté par quel état de l’octet. Si ce choix était librement laissé à chaque informaticien, ou à chaque fabricant d’ordinateur, la communication entre deux ordinateurs serait un véritable casse-tête. L’octet 10001001 serait par exemple traduit par une machine comme un T majuscule, et par une autre comme une parenthèse fermante ! Aussi, il existe un standard international de codage des caractères et des signes de ponctuation. Ce standard stipule quel état de l’octet correspond à quel signe du clavier. Il s’appelle l’ASCII (pour American Standard Code for Information Interchange). Et fort heureusement, l’ASCII est un standard universellement reconnu et appliqué par les fabricants d’ordinateurs et de logiciels. Bien sûr, se pose le problème des signes propres à telle ou telle langue (comme les lettres accentuées en français, par exemple). L’ASCII a paré le problème en réservant certains codes d’octets pour ces caractères spéciaux à chaque langue. En ce qui concerne les langues utilisant un alphabet non latin, un standard particulier de codage a été mis au point. Quant aux langues non alphabétiques (comme le chinois), elles payent un lourd tribut à l’informatique pour n’avoir pas su évoluer vers le système alphabétique…
Revenons-en au codage des nombres sur un octet. Nous avons vu qu’un octet pouvait coder 256 nombres différents, par exemple (c’est le choix le plus spontané) la série des entiers de 0 à 255. Comment faire pour, à partir d’un octet, reconstituer le nombre dans la base décimale qui nous est plus familière ? Ce n’est pas sorcier ; il suffit d’appliquer, si on les a bien compris, les principes de la numérotation de position, en gardant à l’esprit que là, la base n’est pas décimale, mais binaire. Prenons un octet au hasard :
1 1 0 1 0 0 1 1
D'après les principes vus plus haut, ce nombre représente en base dix, en partant de la gauche :
1 x 27 + 1 x 26 + 0 x 25 + 1 x 24 + 0 x 23 + 0 x 22 + 1 x 21 + 1 x 20 =
1 x 128 + 1 x 64 + 1 x 16 + 1 x 2 + 1 x 1 =
128 + 64 + 16 + 2 + 1 =
211
Et voilà ! Ce n’est pas plus compliqué que cela !
Inversement, comment traduire un nombre décimal en codage binaire ? Il suffit de rechercher dans notre nombre les puissances successives de deux. Prenons, par exemple, 186.
Dans 186, on trouve 1 x 128, soit 1 x 27. Je retranche 128 de 186 et j’obtiens 58.
Dans 58, on trouve 0 x 64, soit 0 x 26. Je ne retranche donc rien.
Dans 58, on trouve 1 x 32, soit 1 x 25. Je retranche 32 de 58 et j’obtiens 26.
Dans 26, on trouve 1 x 16, soit 1 x 24. Je retranche 16 de 26 et j’obtiens 10.
Dans 10, on trouve 1 x 8, soit 1 x 23. Je retranche 8 de 10 et j’obtiens 2.
Dans 2, on trouve 0 x 4, soit 0 x 22. Je ne retranche donc rien.
Dans 2, on trouve 1 x 2, soit 1 x 21. Je retranche 2 de 2 et j’obtiens 0.
Dans 0, on trouve 0 x 1, soit 0 x 20. Je ne retranche donc rien.
Il ne me reste plus qu’à reporter ces différents résultats (dans l’ordre !) pour reconstituer l’octet. J’écris alors qu’en binaire, 186 est représenté par :
1 0 1 1 1 0 1 0
C’est bon ? Alors on passe à la suite