Un ordinateur, c’est binaire. C’est vrai ou faux, ‘0’ ou ‘1’. C’est en tout cas ainsi qu’il est perçu. Les transistors laissent ou non passer le courant. Cela fait peu pour compter. Imaginez si nous ne connaissions que 2 chiffres. Il faudrait en aligner pour envisager des grands nombres. Compter jusqu’à 999 demande 10 chiffres binaires là où nous avons besoin de 3 chiffres décimaux.
Même compter jusqu’à 9 demande 4 chiffres binaires : 1001. Nous n’avons besoin que de nos mains pour arriver au même résultat ou d’un seul chiffre. C’est d’ailleurs de nos mains que vient notre système décimal pour compter. Pour simplifier, nous parlons de base. Notre monde base ses connaissances sur le décimal, la base 10, la représentation des nombres avec 10 symboles/chiffres.
L’informatique lui n’en a que 2. On parle de système binaire. Et pourtant, il réalise des calculs que nous ne pouvons réaliser. C’est sur le nombre de transistors que se joue la puissance de calcul de l’ordinateur. Sur quelques centimètres carrés, il est possible de regrouper des milliards de transistors.
Bien sûr, tous ces transistors ne servent pas qu’à représenter des chiffres. Ils sont organisés pour réaliser des fonctions. Les fonctions qui stockent des informations sont appelées des registres. Les premiers registres regroupaient 4 chiffres binaires, aussi nommés bits. Compter de 0 à 15 cela n’est pas très utile. Pourtant c’est de là que vient le système hexadécimal.
Les programmes sont chargés en mémoire sous forme binaire. Mais lorsqu’il faut débugger un programme au niveau du processeur, les séries de ‘0’ et de ‘1’ ne sont pas pratiques. C’est pour cela que les informaticiens ne lisent pas les nombres en binaire mais en hexadécimal. Cela prend 4 fois moins de place. Je rappelle mais le reste du monde compte en décimal.
Avec des registres de 4 bits, on ne peut même pas coder l’ensemble de l’alphabet. Les registres ont donc été élargis à 8 bits. Avec cela, on peut compter jusqu’à 255 ou identifier 255 caractères différents. Les processeurs qui manipulaient ce type de registres étaient des processeurs 8 bits. Les consoles NES et Sega Master System se basaient sur ce type de processeurs.
Puis les processeurs ont implémenté des registres de plus en plus grands. Des registres de 16 bits, 32 bits, … C’était un critère discriminant pour les consoles de jeux vidéos. Plus les registres étaient larges et plus l’information contenue dans un registre était fine (couleurs, positions, …) ou pouvait faire l’objet de traitements. Mais l’évolution des consoles de jeux, c’est une autre histoire.
Les informaticiens n’en ont pas profité pour inventer un nouveau système de calcul. Déjà pour représenter les chiffres au-dessus de 9, en hexadécimal, on est obligé d’utiliser des lettres (de A pour ‘10′ à F pour ‘15′). Alors pour représenter des registres 16 bits sur un caractère, même en ajoutant les alphabets chinois, arabes et cyrillique, on n’y arriverait pas. Un registre 16 bits est donc représenté sur 4 chiffres hexadécimaux.
Pourtant un autre système de calcul est apparu en informatique. L’héxa, c’était trop simple. Dans certains programmes, les chiffres utilisés sont situés entre 0 et 7. Je ne saurais dire pourquoi, mais la notation octale est admise dans la plupart des langages informatiques.
Lors du pot de départ à la retraite d’un collègue, ce dernier déclara ‘J’ai 40 ans, enfin presque.’. Devant l’incompréhension de mes collègues, je me permis d’ajouter qu’il parlait en hexadécimal. L’humour d’informaticien est parfois difficile à saisir. Il me pardonnera d’avoir rédigé mon mot de départ sur une carte en ASCII dans ce même système.
Petite astuce pour finir. En appliquant la logique informatique, il est possible avec nos doigts de compter et d’afficher non pas des nombres de 0 à 10 mais de 0 à 1023. C’est très simple. Il suffit de considérer que si le doigt est replié, il indique 0 et s’il est tendu il indique 1. Les mains alignées, ce sont 10 chiffres binaires qui apparaissent alors pour former un nombre compris entre 0 et ‘2 à la puissance 10’ (moins 1).