vendredi, avril 26, 2024

Comment les informaticiens représentent-ils les nombres très grands ou très petits ?

0 commentaire

Au commencement était le bit. Un vocabulaire, certes, minimal : zéro ou un. Mais avec deux bits, on compte déjà jusqu’à trois : 00 = zéro, 01 = un, 10 = deux et 11 = trois. Avec huit bits (un octet), on va jusqu’à 11111111 = 255.

32 bits permettent de jongler avec les milliards ! Et avec les milliards d’octets de leurs mémoires, les ordinateurs tutoient l’infini. Dès les premiers pas de l’informatique, on a inventé pour représenter des nombres très grands ou très petits, et très précis, le « nombre flottant ».

« Quadruple précision » et « précision octuple »

Cela, en s’inspirant de la « notation scientifique », qui permet d’écrire par exemple que la masse du Soleil est de 1,9884 x 1030 kg. On fait donc de même dans les ordinateurs, en codant séparément les chiffres significatifs (1,9884) – la précision – et l’exposant (30) – qui donne l’ordre de grandeur. La norme IEEE 754, formulée en 1985 par l’Institute of Electrical and Electronics Engineers, une association internationale de droit américain, et adoptée désormais sur la plupart des ordinateurs, leur attribue respectivement 24 et 8 bits. Les nombres ainsi codés sur 32 bits peuvent prendre des valeurs qui, exprimées en décimal, sont comprises entre 10-38 et 1038 avec sept chiffres significatifs. Mais que se passe-t-il si je souhaite, par exemple, multiplier la masse du Soleil par celle de la Terre (5,9722 x 1024) ? Le résultat (1,187512248 x 1055) dépasse les limites de cette norme.

Lire aussi: Sénégal : Les informaticiens de l’administration invités à s’impliquer dans la dématérialisation des procédures

Pas de panique ! Outre la version « simple précision », la norme IEEE 754 propose aussi la « double précision », sur 64 bits, pour représenter des nombres entre 10-308 et 10308 avec seize chiffres significatifs. Ou même la « quadruple précision », moins usitée, sur 128 bits (34 chiffres significatifs, exposants de ±4932). Enfin, la « précision octuple », sur 256 bits : 71 chiffres significatifs et des exposants de ±78913 !… On touche à la démesure !

Aller plus loin avec l’hyperpuissance

Mais on peut encore aller plus loin, avec… « l’hyperpuissance ». « C’est une exponentiation itérée, explique Jean-Michel Muller, directeur de recherche CNRS au Laboratoire de l’informatique du parallélisme (ENS Lyon). Ainsi, 2 à l’hyperpuissance 3 est égal à 2 à la puissance (2 à la puissance 2). » L’accélération est fulgurante : 10 à l’hyperpuissance 2, c’est déjà dix milliards. Et 10 à l’hyperpuissance 3, c’est 10 à la puissance dix milliards… De quoi s’approcher toujours plus près du ciel, sans se brûler les ailes. Certes, mais quid de l’infini lui-même ? Même pas peur, répond l’ordinateur. « La norme IEEE 754, indique Jean-Michel Muller, prévoit un codage de l’infini. Si au cours de l’exécution d’un logiciel, on est amené à diviser “1” par “0”, on obtient l’infini ». Tout simplement.

Science et Avenir