Codage des données en machine.



Documents pareils
Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Logiciel de Base. I. Représentation des nombres

Chapitre 10 Arithmétique réelle

Représentation des Nombres

Conversion d un entier. Méthode par soustraction

IFT2880 Organisation des ordinateurs et systèmes

V- Manipulations de nombres en binaire

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Codage d information. Codage d information : -Définition-

Informatique Générale

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Licence Sciences, Technologies, Santé Mention Informatique Codage de l'information

Représentation d un entier en base b

2. RAPPEL DES TECHNIQUES DE CALCUL DANS R

Architecture de l ordinateur

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Introduction à l'informatique. Vincent Boyer et Jean Méhat

TP 1 : 1 Calculs en binaire, octal et hexadécimal

Les opérations binaires

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Licence Sciences et Technologies Examen janvier 2010

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN

Bases de programmation. Cours 5. Structurer les données

Représentation d un nombre en machine, erreurs d arrondis

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès haouaticpge@gmail.com

Définition : On obtient les nombres entiers en ajoutant ou retranchant des unités à zéro.

Une version javascript sera disponible directement dans le cours prochainement.

Vers l'ordinateur quantique

Programmation Structurée en Langage C

Rappels Entrées -Sorties

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Glossaire des nombres

avec des nombres entiers

La question est : dans 450 combien de fois 23. L opération est donc la division. Le diviseur. Le quotient

Programmation C. Apprendre à développer des programmes simples dans le langage C


Précision d un résultat et calculs d incertitudes

Chapitre 1 I:\ Soyez courageux!

Cours Informatique 1. Monsieur SADOUNI Salheddine

Développement décimal d un réel

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Algorithmique et Programmation, IMA

EXERCICES DE REVISIONS MATHEMATIQUES CM2

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

IV- Comment fonctionne un ordinateur?

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Arithmétique réelle. Introduction à l arithmétique flottante La précision des calculs: analyse et améliorations. Valérie Ménissier-Morain

Recherche dans un tableau

I- Définitions des signaux.

La mémoire. Un ordinateur. L'octet. Le bit

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Petit lexique de calcul à l usage des élèves de sixième et de cinquième par M. PARCABE, professeur au collège Alain FOURNIER de BORDEAUX, mars 2007

Date : Note /20 : EVALUATION Nom : Prénom : Classe : Traitement sur mots

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

Algorithme. Table des matières

Les chaînes de caractères

Initiation à la programmation en Python

Conception de circuits numériques et architecture des ordinateurs

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Équations non linéaires

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Architecture Matérielle et Logicielle (LIF6) Cahier d'exercices, automne 2014

Introduction à l étude des Corps Finis

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

Programmation en langage C

Puissances d un nombre relatif

ET LO GICIEL D UN S YS T EME IN FORMATIQUE

1 Introduction au codage

Table des matières. 10 Gimp et le Web. Option de traitement d'images Mémento pour la séance N o Création d'animation

LES NOMBRES DECIMAUX. I. Les programmes

I. Introduction aux fonctions : les fonctions standards

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

Par combien de zéros se termine N!?

Programmation en Java IUT GEII (MC-II1) 1

UE Programmation Impérative Licence 2ème Année

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Méthodes numériques. Introduction à l'analyse numérique et au calcul scientique. Guillaume Legendre R E S E A R C H U N I V E R S I T Y

Axiomatique de N, construction de Z

Cours d Algorithmique et de Langage C v 3.0

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

DOCM Solutions officielles = n 2 10.

Claude Delannoy. 3 e édition C++

Mathématiques appliquées à l informatique

chapitre 4 Nombres de Catalan

INF 321 : mémento de la syntaxe de Java

ALGORITHMIQUE ET PROGRAMMATION En C

Transmission de données. A) Principaux éléments intervenant dans la transmission

Rappels sur les suites - Algorithme

FONCTION EXPONENTIELLE ( ) 2 = 0.

COURS EULER: PROGRAMME DE LA PREMIÈRE ANNÉE

TP 1. Prise en main du langage Python

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Agent DEXXON DATAMEDIA GENNEVILLIERS

STAGE IREM 0- Premiers pas en Python

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Chap III : Les tableaux

Transcription:

Codage des données en machine. 1 Entiers naturels Changements de base Codage en machine 2 Entiers relatifs : codage en complément à 2 Dénition Addition et calcul de l'opposé en complément à 2 3 Représentation de nombres rationnels Changement de base : décimal vers binaire Changement de base : binaire vers décimal 4 Nombres à virgule ottante Dénition générale Représentation en machine : norme IEEE-754 Arrondi correct 5 Conclusion N. Louvet Codage des données en machine. 13 septembre 2015 1 / 31

Plan 1 Entiers naturels Changements de base Codage en machine 2 Entiers relatifs : codage en complément à 2 Dénition Addition et calcul de l'opposé en complément à 2 3 Représentation de nombres rationnels Changement de base : décimal vers binaire Changement de base : binaire vers décimal 4 Nombres à virgule ottante Dénition générale Représentation en machine : norme IEEE-754 Arrondi correct 5 Conclusion N. Louvet Codage des données en machine. 13 septembre 2015 2 / 31

Soit β N, β > 1, une base. Tout n N peut être représenté de manière unique par sa représentation positionnelle en base β : p 1 (x p 1 x p 2 x 1 x 0 ) β := x i β i. i=0 Les x i {0, 1,..., β 1} sont les chires de l'écriture de n en base β. On attribue un symbole à chaque chire : β = 2, chires 0 et 1 ; β = 10, chires de 0 à 9 ; β = 16, chires de 0 à F. p est le nombre de chires nécessaires pour écrire de l'entier naturel n. Ex : (5134) 10 = 5 10 3 + 1 10 2 + 3 10 + 4 = 5134 en écriture décimale. N. Louvet Codage des données en machine. 13 septembre 2015 3 / 31

Plan 1 Entiers naturels Changements de base Codage en machine 2 Entiers relatifs : codage en complément à 2 Dénition Addition et calcul de l'opposé en complément à 2 3 Représentation de nombres rationnels Changement de base : décimal vers binaire Changement de base : binaire vers décimal 4 Nombres à virgule ottante Dénition générale Représentation en machine : norme IEEE-754 Arrondi correct 5 Conclusion N. Louvet Codage des données en machine. 13 septembre 2015 4 / 31

Utiliser la dénition de la notation positionnelle Soient β la base de départ et γ celle d'arrivée. On écrit n = p 1 i=0 x iβ i. Il est toujours possible de convertir les x i et β vers leurs écritures en base γ, de calculer p 1 i=0 x iβ i en eectuant toutes les opérations en base γ. On déduit l'écriture de n en base γ : il sut de calculer dans la base d'arrivée γ. Ex - conversion binaire vers décimal : avec n = (10100) 2. On ajoute les puissances de 2 correspondant aux bits non-nuls. N. Louvet Codage des données en machine. 13 septembre 2015 5 / 31

Utiliser la dénition de la notation positionnelle Soient β la base de départ et γ celle d'arrivée. On écrit n = p 1 i=0 x iβ i. Il est toujours possible de convertir les x i et β vers leurs écritures en base γ, de calculer p 1 i=0 x iβ i en eectuant toutes les opérations en base γ. On déduit l'écriture de n en base γ : il sut de calculer dans la base d'arrivée γ. Ex - conversion binaire vers décimal : avec n = (10100) 2. On ajoute les puissances de 2 correspondant aux bits non-nuls. chire 1 0 1 0 0 position 4 3 2 1 0 poids 2 4 0 2 2 0 0 Donc (10100) 2 = 2 4 +2 2 = 16+4 = 20. N. Louvet Codage des données en machine. 13 septembre 2015 5 / 31

Divisions euclidiennes successives Le reste dans la division euclidienne d'un entier naturel n par β donne le chire de poids faible dans la représentation de n en base β. En eet, n = x p 1 β p 1 + x p 2 β p 2 + + x 2 β 2 + x 1 β 1 + x 0, = ( ) x p 1 β p 2 + x p 2 β p 3 + + x 2 β 1 + x 1 β + x 0 } {{ } quotient avec 0 x 0 < β. En d'autres termes, n mod β = x 0. }{{} reste, On peut donc obtenir tous les chires de l'écriture d'un entier naturel n par des divisions euclidiennes successives, en s'arrêtant au premier quotient nul : on obtient les chires de poids faibles d'abord! N. Louvet Codage des données en machine. 13 septembre 2015 6 / 31

Ex : soit n = (423) 10, à convertir en base 2. 423 = 211 2 + 1 211 = 105 2 + 1 105 = 52 2 + 1 52 = 26 2 + 0 26 = 13 2 + 0 13 = 6 2 + 1 6 = 3 2 + 0 3 = 1 2 + 1 1 = 0 2 + 1 On en déduit que n = (110100111) 2. Ex : Conversion décimal vers octal. Soit n = (3452) 10, à convertir en base 8. 3452 = 431 8 + 4 431 = 53 8 + 7 53 = 6 8 + 5 6 = 0 8 + 6 Donc n = (6574) 8. N. Louvet Codage des données en machine. 13 septembre 2015 7 / 31

Entre les bases 2, 8 et 16 : méthodes directes Comme 8 = 2 3, chaque chire octal est représenté par un entier sur trois bits, et chaque entier sur trois bits est représenté par un chire octal : (x 8 x 7 x 6 x 5 x 4 x 3 x 2 x 1 x 0 ) 2 = (x 8 x 7 x 6 ) 2 8 2 +(x 5 x 4 x 3 ) 2 8 1 +(x 2 x 1 x 0 ) 2 8 0 = (y 2 y 1 y 0 ) 8. } {{ } } {{ } } {{ } =y 2 =y 1 =y 0 Ex - octal vers binaire : n = (34521) 8. On fait un tableau de conversion entre nombres binaires et chires octaux : On a n = (011 100 101 010 001) 2. rep. chire rep. chire binaire octal binaire octal 000 0 100 4 001 1 101 5 010 2 110 6 011 3 111 7 N. Louvet Codage des données en machine. 13 septembre 2015 8 / 31

Plan 1 Entiers naturels Changements de base Codage en machine 2 Entiers relatifs : codage en complément à 2 Dénition Addition et calcul de l'opposé en complément à 2 3 Représentation de nombres rationnels Changement de base : décimal vers binaire Changement de base : binaire vers décimal 4 Nombres à virgule ottante Dénition générale Représentation en machine : norme IEEE-754 Arrondi correct 5 Conclusion N. Louvet Codage des données en machine. 13 septembre 2015 9 / 31

En machine, le nombre de bits p de la représentation positionnelle est xé pour chaque formats de codage (entiers 8, 16, 32 ou 64 bits). Si le résultat d'une opération requiert plus de p bits pour être représenté : le résultat calculé est formé des p bits de poids faibles du résultat exact, le drapeau de dépassement de capacité de l'alu est levé. Cela n'implique pas un arrêt des calculs, car le résultat peut être exploité. Soit m un entier codé sur q p bits : q 1 q 1 m = m i 2 i = m i 2 i p i=0 i=p } {{ } quotient de m par 2 p p 1 2 p + i=0 m i 2 i. } {{ } reste Lorsqu'on eectue une opération arithmétique entre entiers naturels, et que l'on représente le résultat m sur p bits, le résultat obtenu est m mod 2 p. N. Louvet Codage des données en machine. 13 septembre 2015 10 / 31

Plan 1 Entiers naturels Changements de base Codage en machine 2 Entiers relatifs : codage en complément à 2 Dénition Addition et calcul de l'opposé en complément à 2 3 Représentation de nombres rationnels Changement de base : décimal vers binaire Changement de base : binaire vers décimal 4 Nombres à virgule ottante Dénition générale Représentation en machine : norme IEEE-754 Arrondi correct 5 Conclusion N. Louvet Codage des données en machine. 13 septembre 2015 11 / 31

Représentation en complément à 2 Soit un entier relatif n, 2 p 1 n 2 p 1 1, à coder en machine sur p bits. La notation utilisée pour le codage de n en complément à 2 sur p bits est : n = (c p 1 c p 2... c 1 c 0 ) 2. On adopte la dénition suivante : p 2 (c p 1 c p 2... c 1 c 0 ) 2 := c p 1 2 p 1 + c i 2 i. i=0 On peut montrer que : { n 0 ssi c p 1 = 0, n < 0 ssi c p 1 = 1. N. Louvet Codage des données en machine. 13 septembre 2015 12 / 31

Une manière d'interpréter le codage en complément à 2 est donc de considérer que le bit le plus à gauche a un poids négatif ( 2 p 1 ). Ex : par exemple, supposons qu'on eectue un codage sur 8 bits (p = 8). Quelle est la valeur décimale codée par (10000011) 2? N. Louvet Codage des données en machine. 13 septembre 2015 13 / 31

Une manière d'interpréter le codage en complément à 2 est donc de considérer que le bit le plus à gauche a un poids négatif ( 2 p 1 ). Ex : par exemple, supposons qu'on eectue un codage sur 8 bits (p = 8). Quelle est la valeur décimale codée par (10000011) 2? (10000011) 2 = 128 + 1 + 2 = ( 125) 10. Comment coder ( 120) 10 en complément à 2? N. Louvet Codage des données en machine. 13 septembre 2015 13 / 31

Une manière d'interpréter le codage en complément à 2 est donc de considérer que le bit le plus à gauche a un poids négatif ( 2 p 1 ). Ex : par exemple, supposons qu'on eectue un codage sur 8 bits (p = 8). Quelle est la valeur décimale codée par (10000011) 2? (10000011) 2 = 128 + 1 + 2 = ( 125) 10. Comment coder ( 120) 10 en complément à 2? ( 120) 10 = 128 + 8, donc ( 120) 10 = (10001000) 2. N. Louvet Codage des données en machine. 13 septembre 2015 13 / 31

Addition et complément à 2 Soient m = (c m ) 2 et n = (c n ) 2 en complément à 2 sur p bits. Addition en complément à 2 En l'absence de dépassement de capacité, le codage de m + n en complément à 2 sur p bits est le codage de (c m + c n ) mod 2 p en tant qu'entier naturel. Dépassement de capacité, i.e. le résultat est incorrect : si m et n sont de signes opposés aucun dépassement n'est possible. si m et n sont de même signe, il y dépassement ssi le signe du résultat calculé dière du signe des opérandes. Opposé en complément à 2 En l'absence de dépassement de capacité, le codage de n en complément à 2 sur p bits est le même que celui de l'entier naturel (c p 1 c p 2... c 1 c 0 ) 2 + 1 mod 2 p. N. Louvet Codage des données en machine. 13 septembre 2015 14 / 31

Ex : p = 7, (36) 10 = (0100100) 2 a pour opposé ( 36) 10 = (1011100) 2. Notons que si on additionne (1011100) 2 et (0100100) 2, on obtient bien 0 : 1 1 1 0 1 1 1 1 1 1 0 0 + 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 N. Louvet Codage des données en machine. 13 septembre 2015 15 / 31

Plan 1 Entiers naturels Changements de base Codage en machine 2 Entiers relatifs : codage en complément à 2 Dénition Addition et calcul de l'opposé en complément à 2 3 Représentation de nombres rationnels Changement de base : décimal vers binaire Changement de base : binaire vers décimal 4 Nombres à virgule ottante Dénition générale Représentation en machine : norme IEEE-754 Arrondi correct 5 Conclusion N. Louvet Codage des données en machine. 13 septembre 2015 16 / 31

Les rationnels sont les nombres de la forme p, avec p Z et q N {0}. q On veut coder dans un format de longueur xe des nombres dont l'écriture en binaire est potentiellement innie : il faut se contenter d'une approximation. Tout nombre rationnel x Q positif peut être décomposé en une partie entière x N telle que x x < x + 1 ; une partie fractionnaire {x} = x x avec 0 {x} < 1. On utilise la notation positionnelle pour l'écriture de {x} : s'il existe q N t.q. q {x} = (0, x 1... x q ) β = x i β i, alors x = (x p 1 x p 2... x 0,x 1 x 2... x q ) β est l'écriture x en base β. i=1 N. Louvet Codage des données en machine. 13 septembre 2015 17 / 31

Le problème est que l'écriture d'un rationnel en base β n'est pas forcément nie : par contre, on sait que cette écriture est nécessairement périodique. Ex : en base β = 10, quelle est l'écriture de 13/7? N. Louvet Codage des données en machine. 13 septembre 2015 18 / 31

Le problème est que l'écriture d'un rationnel en base β n'est pas forcément nie : par contre, on sait que cette écriture est nécessairement périodique. Ex : en base β = 10, quelle est l'écriture de 13/7? 1 3 7 6 0 1, 85714285... 4 0 5 0 1 0 3 0 2 0 6 0 4 0 Dans ce cas, on note x = (1, 857142) 10, pour indiquer la période. N. Louvet Codage des données en machine. 13 septembre 2015 18 / 31

Changement de base : décimal vers binaire Soit 0 x < 1 dont on connaît l'écriture en décimal. On veut déterminer son écriture en binaire : x = (0, x 1... x q ) 2. On a 2 x = (x 1, x 2... x q ) 2, donc x 1 = 2 x. On procédant par des multiplications successives par 2, on peut ainsi extraire un par un les bits de l'écriture binaire de x. Ex : convertir 1/10 = (0, 1) 10 en écriture binaire. N. Louvet Codage des données en machine. 13 septembre 2015 19 / 31

Changement de base : décimal vers binaire Soit 0 x < 1 dont on connaît l'écriture en décimal. On veut déterminer son écriture en binaire : x = (0, x 1... x q ) 2. On a 2 x = (x 1, x 2... x q ) 2, donc x 1 = 2 x. On procédant par des multiplications successives par 2, on peut ainsi extraire un par un les bits de l'écriture binaire de x. Ex : convertir 1/10 = (0, 1) 10 en écriture binaire. 1/10 2 = 0 + 2/10 2/10 2 = 0 + 4/10 4/10 2 = 0 + 8/10 8/10 2 = 1 + 6/10 6/10 2 = 1 + 2/10 0, 0 0 0 1 1 On en déduit que (0, 1) 10 = (0, 00011) 2. N. Louvet Codage des données en machine. 13 septembre 2015 19 / 31

Changement de base : binaire vers décimal On considère un rationnel 0 x < 1 dont on connaît l'écriture en binaire. On souhaite déterminer son écriture en décimale. On peut utiliser la même méthode que précédemment : Il sut d'eectuer des multiplications par (10) 10 = (1010) 2, en calculant en binaire : on obtient les chires décimaux de l'écriture de x. Les calculs à la main sont fastidieux, mais une machine peut les mener ecacement. Pour des nombres binaires comptant peu de bits après la virgule, il est susant de sommer le poids de ces bits. 2 1 = 0, 5 2 2 = 0, 25 2 3 = 0, 125 2 4 = 0, 0625 N. Louvet Codage des données en machine. 13 septembre 2015 20 / 31

Plan 1 Entiers naturels Changements de base Codage en machine 2 Entiers relatifs : codage en complément à 2 Dénition Addition et calcul de l'opposé en complément à 2 3 Représentation de nombres rationnels Changement de base : décimal vers binaire Changement de base : binaire vers décimal 4 Nombres à virgule ottante Dénition générale Représentation en machine : norme IEEE-754 Arrondi correct 5 Conclusion N. Louvet Codage des données en machine. 13 septembre 2015 21 / 31

Dénition On se concentre sur les nombres à virgule ottante binaires à p bits de précision, que nous appellerons nombres ottants ou ottants. Un nombre ottant normalisé x est soit 0, soit un rationnel de la forme x = ( 1) s (1, x 1... x p 1 ) 2 2 e, s {0, 1} est le signe du ottant considéré, (1, x 1... x p 1 ) 2 est sa mantisse fractionnaire, e Z est son exposant, t.q. e min e e max. Rem : le 1 en tête garantit l'unicité de la représentation, souvent appelé notation scientique en base 10, on ne parlera pas ici des ottants sous-normaux. N. Louvet Codage des données en machine. 13 septembre 2015 22 / 31

Ex : liste de tous les ottants normalisés positifs ou nuls avec 3 bits de précision, e min = 1 et e max = 2. N. Louvet Codage des données en machine. 13 septembre 2015 23 / 31

Ex : liste de tous les ottants normalisés positifs ou nuls avec 3 bits de précision, e min = 1 et e max = 2. e binaire décimal 0 0 e = 1 (1, 00) 2 2 1 0, 5 (1, 01) 2 2 1 0, 625 (1, 10) 2 2 1 0, 75 (1, 11) 2 2 1 0, 875 e = 0 (1, 00) 2 2 0 1 (1, 01) 2 2 0 1, 25 (1, 10) 2 2 0 1, 5 (1, 11) 2 2 0 1, 75 e = 1 (1, 00) 2 2 1 2 (1, 01) 2 2 1 2, 5 (1, 10) 2 2 1 3 (1, 11) 2 2 1 3, 5 e = 2 (1, 00) 2 2 2 4 (1, 01) 2 2 2 5 (1, 10) 2 2 2 6 (1, 11) 2 2 2 7 N. Louvet Codage des données en machine. 13 septembre 2015 23 / 31

Ex : représenter (0, 1) 10 par un ottant normalisé avec 8 bits de précision. On a vu (0, 1) 10 = (0, 00011) 2. On commence par écrire : (0, 1) 10 = (0, 000 11001100 } {{ } 110011) 2 = (1, 1001100 110011) } {{ } 2 2 4. 8 bits 8 bits Donc (0, 1) 10 est dans l'intervalle suivant, délimité par deux ottants consécutifs : [(1, 1001100) } {{ } 2 2 4 ; (1, 1001101) } {{ } 2 2 4 ]. 8 bits 8 bits Le milieu de cet intervalle est (1, 1001100 1) } {{ } 2 2 4. 8 bits Ici, on choisit d'arrondir au plus proche : comme (0, 1) 10 est supérieur au point milieu, on choisit l'approximation (0, 1) 10 (1, 1001101) } {{ } 2 2 4. 8 bits N. Louvet Codage des données en machine. 13 septembre 2015 24 / 31

Représentation en machine : norme IEEE-754 La norme IEEE-754 a été introduite en 1985, et a été révisée en 2008. c = s code de l'exposant : c e code de la mantisse : c m 1 bit k bits p 1 bits Pour un ottant normal, la valeur codée est f (c) = ( 1) s(c) m(c) 2 e(c), avec s(c) = s le signe du ottant. m(c) = (1, c m ) 2, ce qui signie que le 1 de tête est codé implicitement. e(c) dépend de (c e ) 2, mais doit être interprété avec précautions... N. Louvet Codage des données en machine. 13 septembre 2015 25 / 31

Codage des ottants en précision p c = s code de l'exposant : c e code de la mantisse : c m 1 bit k bits p 1 bits Comme c e est un code sur k bits, notons que 0 (c e ) 2 2 k 1. (c e ) 2 = 0 et (c m ) 2 = 0 indique que le nombre représenté est zéro. Il y a deux codages de 0 : 0 ou +0 selon s. (c e ) 2 = 2 k 1 indique une valeur exceptionnelle (+Inf, -Inf, NaN) : Ex : 1/0 = +Inf, 0/0 = NaN, a + Inf = Inf, +Inf Inf = NaN... 1 (c e ) 2 2 k 2 indique que le nombre représenté est normal. Alors, m(c) = (1, c m ) 2 et e(c) = (c e ) 2 (2 k 1 1). } {{ } biais N. Louvet Codage des données en machine. 13 septembre 2015 26 / 31

Formats standards La norme IEEE-754 prévoit deux formats standards, la simple précision et la double précision (types float et double en C) : format mantisse exposant taille précision p 1 k biais e min e max simple p = 24 23 8 127 126 127 32 bits double p = 53 52 11 1023 1022 1023 64 bits Valeurs extrêmes pour les ottants normalisés : format plus petit t normalisé positif plus grand ottant normalisé simple 2 126 1, 2 10 38 (1 2 24 ) 2 128 3, 4 10 38 double 2 1022 2, 2 10 308 (1 2 53 ) 2 1023 1, 8 10 308 N. Louvet Codage des données en machine. 13 septembre 2015 27 / 31

Arrondi correct Pour représenter un rationnel ou un réel r par un nombre ottant, il faut en général arrondir r. La norme IEEE-754 propose 4 modes d'arrondi : arrondi au plus proche : RN(r). Si r est équidistant de deux ottants consécutifs, on retourne celui dont la mantisse se termine par un 0. arrondi vers (RD), + (RU), et vers 0 (RZ). Ex : RN(r) r RU(r) (1, x... x0) 2 (1, x... x01) 2 (1, x... x1) 2 La norme impose l'arrondi correct pour les opérations +, -,, / et : le résultat calculé doit être le résultat exact arrondi selon le mode d'arrondi courant. L'arrondi au plus proche est en général le mode d'arrondi par défaut. N. Louvet Codage des données en machine. 13 septembre 2015 28 / 31

Un mot sur les erreurs d'arrondi A chaque opération ottante, on peut avoir une erreur d'arrondi. De plus, les entrées d'un programme ne sont pas toujours représentées exactement. Souvent, l'eet des erreurs d'arrondis est négligeable sur le résultat nal d'une suite d'opérations ; mais leur eet peut parfois être gênant... Ex : On compile le programme C suivant sur un Intel Core 2 Duo : #include <stdio.h> int main(void) { int i; float x = 0, y = 0.1; } for(i=1; i<= 100000; i++) x += y; printf("résultat : %8.3f\n", x); return(0); N. Louvet Codage des données en machine. 13 septembre 2015 29 / 31

Un mot sur les erreurs d'arrondi A chaque opération ottante, on peut avoir une erreur d'arrondi. De plus, les entrées d'un programme ne sont pas toujours représentées exactement. Souvent, l'eet des erreurs d'arrondis est négligeable sur le résultat nal d'une suite d'opérations ; mais leur eet peut parfois être gênant... Ex : On compile le programme C suivant sur un Intel Core 2 Duo : #include <stdio.h> int main(void) { int i; float x = 0, y = 0.1; } for(i=1; i<= 100000; i++) x += y; printf("résultat : %8.3f\n", x); return(0); A l'exécution, on obtient : Résultat : 9998.557 N. Louvet Codage des données en machine. 13 septembre 2015 29 / 31

Plan 1 Entiers naturels Changements de base Codage en machine 2 Entiers relatifs : codage en complément à 2 Dénition Addition et calcul de l'opposé en complément à 2 3 Représentation de nombres rationnels Changement de base : décimal vers binaire Changement de base : binaire vers décimal 4 Nombres à virgule ottante Dénition générale Représentation en machine : norme IEEE-754 Arrondi correct 5 Conclusion N. Louvet Codage des données en machine. 13 septembre 2015 30 / 31

Il existe de nombreuses techniques de codage, chacune adaptée au codage d'un type d'information bien particulier. Nous avons vu des codages pour : les entiers naturels : représentation positionnelle ; les entiers relatifs : technique du complément à 2 ; les nombres rationnels : représentation positionnelle périodique ; les nombres à virgule ottante : norme IEEE-754. Nous n'avons pas vu : les caractères et le texte : ASCII, Unicode ; des codages permettant la détection et la correction d'erreurs ; des codages pour la compression de données. Dans la suite, nous donnerons une idée des techniques utilisées pour concevoir des circuits logiques permettant de manipuler ces codes en machine. N. Louvet Codage des données en machine. 13 septembre 2015 31 / 31