Un ordinateur ne manipule que des 0 et des
1. Pour qu'il compte, il faut lui donner des conventions : une pour les
entiers positifs, une autre pour les négatifs, une troisième
pour les nombres à virgule. Ce cours les reprend toutes, de
l'addition binaire jusqu'à la norme IEEE 754, et explique
pourquoi 0,1 + 0,2 ne fait pas 0,3.
Ce que vous saurez faire à la fin
- Convertir un nombre entre les bases 2, 10 et 16, dans les deux sens.
- Coder un entier relatif en binaire signé, en complément
à 1 et en complément à 2, et expliquer pourquoi seule la
troisième convention a survécu.
- Détecter un débordement et le distinguer d'une simple
retenue.
- Coder et décoder un nombre réel en
IEEE 754, simple et double précision.
- Reconnaître les cas où la conversion ne se termine pas, et
en tirer les bonnes règles de programmation.
Le format, en une image
À qui s'adresse ce cours
À tout étudiant d'architecture des ordinateurs, de licence
d'informatique ou de classe préparatoire, qui sait poser une addition
en binaire. Aucune autre connaissance n'est supposée.
Tous les motifs binaires donnés dans ce cours ont
été vérifiés par le calcul avant
d'être publiés, y compris les arrondis de la norme
IEEE 754.
Les huit chapitres
Chapitre 1Pourquoi tout finit en 0 et en 1Le bit, l'octet, le binaire pur et l'hexadécimal. Comment convertir dans les deux sens, quelle étendue de valeurs on obtient selon le nombre de bits, et pourquoi un motif binaire ne veut rien dire tant qu'on n'a pas choisi une convention de lecture.Chapitre 2Le binaire signéLe codage signe et valeur absolue : un bit pour le signe, le reste pour la grandeur. Exemple détaillé de −24 sur 8 bits, étendue de codage, et les deux défauts qui ont condamné cette convention : le double zéro et l'addition impraticable.Chapitre 3Le complément à 1Coder un nombre négatif en inversant chaque bit de sa valeur absolue. Le complément logique ou restreint : méthode, étendue, addition avec report circulaire, et le double zéro qu'il n'arrive pas à faire disparaître.Chapitre 4Le complément à 2La convention retenue par tous les processeurs modernes : un seul zéro, une addition sans report circulaire, une soustraction gratuite. Méthode de codage, étendue asymétrique, détection du débordement et extension de signe.Chapitre 5La virgule fixeCoder un nombre à virgule en plaçant le séparateur à une position convenue. Poids négatifs des positions après la virgule, conversion par multiplications successives par 2, et les deux limites qui ont conduit à la virgule flottante.Chapitre 6La virgule flottante et la normalisationSigne, mantisse, exposant, base : la notation scientifique portée en binaire. Pourquoi il faut normaliser sous la forme 1,M × 2^e, à quoi sert le bit implicite, et pourquoi l'exposant est biaisé plutôt que signé.Chapitre 7La norme IEEE 754Le format universel des nombres flottants : simple précision sur 32 bits, double précision sur 64. Découpage du mot, méthode de codage en quatre étapes, décodage, cas spéciaux et caractéristiques chiffrées des deux formats.Chapitre 8Quand le binaire ne tombe pas justePourquoi 0,1 n'existe pas exactement en machine, comment le développement binaire boucle, pourquoi 0,1 + 0,2 ne vaut pas 0,3, et les règles de programmation qui évitent les mauvaises surprises avec les nombres flottants.
Pour s'entraîner
Pour aller plus loin