Adloun

La représentation des nombres

Cours · informatique (tronc commun des prépas scientifiques), chapitre 11 · prépas scientifiques, tronc commun · le début du chapitre, la suite sur Adloun

La représentation d'un nombre flottant : un bit de signe, un exposant et une mantisse.

11.1 Introduction et motivation

Le chapitre 1 l'avait promis en passant : 0.1 + 0.2 ne vaut pas 0.3, et il faudrait un jour comprendre pourquoi. Ce jour est arrivé. Une machine ne manipule que des suites finies de bits — des et des par paquets de taille fixe — et tout nombre doit s'y loger : les entiers, qui y tiennent exactement mais pas tous ; les réels, qui n'y tiennent presque jamais et qu'on y approche par les flottants. De cette finitude découlent des phénomènes que tout programmeur scientifique rencontre : le débordement des entiers à taille fixe (que Python masque, mais pas les autres langages ni les bibliothèques numériques), l'impossibilité de représenter , l'absorption des petits nombres par les grands, l'annulation catastrophique des soustractions — et l'interdiction, déjà décrétée au chapitre 1, de comparer des flottants par ==.

L'objectif du chapitre est fixé par le programme : sans formalisation théorique, comprendre les enjeux de la représentation pour expliquer les difficultés rencontrées et les précautions à prendre. On saura, à la fin, répondre en connaissance de cause aux trois questions du calcul numérique : que peut contenir un mot machine ? qu'est-ce qu'un flottant, exactement ? et que vaut une égalité entre deux résultats de calcul ?

11.2 Les entiers positifs sur des mots de taille fixe

11.2.1 Le mot machine

Définition 11.1Bit, mot, écriture binaire

Le bit est l'unité d'information : ou . Un mot de taille est une suite de bits ; il représente naturellement l'entier positif

— l'écriture en base deux, où chaque position vaut une puissance de (comme chaque position décimale vaut une puissance de ). Exemple sur bits : .

Proposition 11.2Plage représentable

Un mot de bits représente exactement les entiers de : valeurs distinctes, ni une de plus ni une de moins — il y a précisément suites de bits. Repères : bits à (les pixels du chapitre 8 !), bits environ , bits environ .

Exemple 11.3Le débordement

Que vaut sur bits ? L'addition binaire propage une retenue qui sort du mot : — un bit de trop, qui est perdu. Résultat stocké : . C'est le débordement (overflow) : sur bits, l'arithmétique est silencieusement modulo . Le bogue du milieu de la dichotomie (chapitre 5) en était une manifestation : peut déborder même quand le résultat final tiendrait ; le compteur kilométrique qui repasse à zéro en est l'image fidèle.

iRemarque

La conversion de base n'est pas un objectif du programme — mais savoir lire une écriture binaire courte et retrouver les puissances de (, déjà rencontré au chapitre 5) reste indispensable pour raisonner sur les plages et les débordements. En Python, bin(211) affiche '0b11010011' et int("11010011", 2) revient — utile pour expérimenter.

Exercices du chapitre

La suite du cours · Tous les exercices du chapitre