Unité 3: Représentation interne des informations. Unité 3: Représentation interne des informations

Documents pareils
Logiciel de Base. I. Représentation des nombres

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

IFT2880 Organisation des ordinateurs et systèmes

Conversion d un entier. Méthode par soustraction

Représentation des Nombres

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

Chapitre 10 Arithmétique réelle

Représentation d un entier en base b

Informatique Générale

Les opérations binaires

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

Architecture de l ordinateur

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

V- Manipulations de nombres en binaire

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

Algorithme. Table des matières

Cours Informatique 1. Monsieur SADOUNI Salheddine

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

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

Licence Sciences et Technologies Examen janvier 2010

Chapitre 1 I:\ Soyez courageux!

GPA770 Microélectronique appliquée Exercices série A

Microprocesseur + Logiciel

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP


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

1 Introduction au codage

avec des nombres entiers

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Système binaire. Algèbre booléenne

NOTIONS DE RESEAUX INFORMATIQUES

a) b)

Architecture des ordinateurs Introduction à l informatique

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

Structure du format BMP, sa lecture, sa construction et son écriture

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Introduction à l algorithmique et à la programmation (Info 2)

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

Cours d initiation à la programmation en C++ Johann Cuenin

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

Le codage informatique

Rappels Entrées -Sorties

ANALYSE TRAMEs LIAISON SERIE

Jeux de caracte res et encodage (par Michel Michaud 2014)

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

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

Résolution d équations non linéaires

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

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

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

Raisonnement par récurrence Suites numériques

Exemple d implantation de fonction mathématique sur ST240

Glossaire des nombres

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

CODAGE DES SMS. 2 Commandes «AT» 25 3 Matériels utilisés 55 4 Interfacer un téléphone GSM 73 5 Réalisations électroniques 101

Mathématiques appliquées à l informatique

Fonctions homographiques

Cours d Informatique

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

Examen Médian - 1 heure 30

Auto-Entreprise : Activités : Eric SOTY - Siret n Formation Bureautique, continue d'adultes. Tél : Fax :

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

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

Cours 7 : Utilisation de modules sous python

Activité 1. Compter les points Écriture binaire des nombres. Résumé. Liens pédagogiques. Compétences. Âge. Matériel

ALGORITHMIQUE ET PROGRAMMATION En C

Vers l'ordinateur quantique

Une version javascript sera disponible directement dans le cours prochainement.

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

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

TO4T Technologie des ordinateurs. Séance 1 Introduction aux technologies des ordinateurs

Puissances d un nombre relatif


Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

UFR de Mathématiques et Informatique Année 2009/2010. Réseaux Locaux TP 04 : ICMP, ARP, IP

AC AB. A B C x 1. x + 1. d où. Avec un calcul vu au lycée, on démontre que cette solution admet deux solutions dont une seule nous intéresse : x =

Feuille TD n 1 Exercices d algorithmique éléments de correction

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

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

LES DIFFÉRENTS FORMATS AUDIO NUMÉRIQUES

Exercices - Polynômes : corrigé. Opérations sur les polynômes

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

Documentation SecurBdF

Initiation à la programmation en Python

Priorités de calcul :

Introduction à NetCDF

2. RAPPEL DES TECHNIQUES DE CALCUL DANS R

Les chaînes de caractères

Le chiffre est le signe, le nombre est la valeur.

TP 1. Prise en main du langage Python

Initiation au binaire

STAGE IREM 0- Premiers pas en Python

TS 35 Numériser. Activité introductive - Exercice et démarche expérimentale en fin d activité Notions et contenus du programme de Terminale S

Concevoir son microprocesseur

Algorithmes et mathématiques. 1. Premiers pas avec Python. Exo Hello world!

Rappels d architecture

Transcription:

Objectifs : À la fin de cette unité, - vous saurez comment passer d une base à l autre - vous saurez comment sont représentés dans l'ordinateur les nombres fractionnaires et les nombres exprimés en virgule flottante. - vous saurez comment l'ordinateur effectue des calculs sur des nombres utilisant ces représentations. Pour y arriver, vous devez maîtriser les objectifs suivants : - passer d'une base à une autre par différentes méthodes : évaluation à la main, à l'aide de tables, ou à l'aide d'une calculette; Pierre Marchand, 2001 69 Objectifs : - passer d'une chaîne de caractères entrée au clavier pour représenter un nombre entier, et la convertir dans le format binaire que comprend l'ordinateur, en passant par la représentation intermédiaire BCD. - convertir la partie fractionnaire d'un nombre décimal dans sa représentation binaire et vice-versa; - convertir un nombre réel dans sa représentation en virgule flottante; - effectuer les quatre opérations arithmétiques sur des nombres en virgule flottante Pierre Marchand, 2001 70 1

Le BCD Le BCD est un code dans lequel chaque chiffre d un nombre décimal est codé en binaire sur 4 bits. Ces chiffres peuvent être représenté sur un octet individuel, c est le BCD non compacté. Exemple : 327 10 0000 0011 0000 0010 0000 0111 Comme chaque chiffre n utilise que 4 bits, on peut les grouper 2 par octet. C est le BCD compacté. Exemple : 53 10 0101 0011 Pierre Marchand, 2001 71 Il s agit d évaluer l expression a i B i dans la base destination. i=0 Décimal-binaire : 142 10 = (1 10 2 ) + (4 10 1 ) + (2 10 0 ) = (1 1010 2 1010 2 ) + (100 2 1010 2 ) + 0010 2 = 1000 1110 2 n Pierre Marchand, 2001 72 2

Décimal-binaire : On peut effectuer les multiplications par 10 en remarquant que 10x = 8x + 2x, et en se rappelant qu un décalage à gauche de 1 bit est une multiplication par 2. C est généralement plus rapide que la multiplication binaire. Ainsi, 1010 2 x 1010 2 = 1010000 2 + 10100 2 = 110 0100 2. 100 2 x 1010 2 = 100000 2 + 1000 2 = 10 1000 2 On obtient finalement : 142 10 = 110 0100 2 + 10 1000 2 + 0010 2 et 142 10 = 1000 1110 2 Pierre Marchand, 2001 73 Binaire-décimal : 1000 1110 2 = (1 2 7 ) + (0 2 6 ) + (0 2 5 ) + (0 2 4 ) + (1 2 3 ) + (1 2 2 ) + (1 2 1 ) + (0 2 0 ) = 2 7 + 2 3 + 2 2 + 2 1 = 128 10 + 8 + 4 + 2 = 142 10 Pierre Marchand, 2001 74 3

Factorisation de Horner n a = a n B n + a n-1 B n-1 i B i + + a 1 B + a 0 i=0 = (((((0 + a n )B + a n-1 )B + a n-2 )B + a 1 )B + a 0 Pierre Marchand, 2001 75 Binaire-décimal (algorithme R = b + 2R) 1000 1110 R = 0 1 + 2 0 = 1 0 + 2 1 = 2 0 + 2 2 = 4 0 + 2 4 = 8 1 + 2 8 = 17 10 1 + 2 17 10 = 35 10 1 + 2 35 10 = 71 10 0 + 2 71 10 = 142 10 Arithmétique BCD Pierre Marchand, 2001 76 4

Décimal-binaire (algorithme R = c + 10R) 142 R = 0 1 + 1010 2 0 = 1 100 2 + 1010 2 1 = 1110 2 10 2 + 1010 2 1110 2 = 1000 1110 2 Pierre Marchand, 2001 77 Dans les techniques précédentes, on effectuait la conversion en utilisant l arithmétique de la base destination. Toutefois, on peut vouloir effectuer ces conversions en utilisant l arithmétique de la base source. C est le cas, par exemple, quand l ordinateur, qui doit travailler en arithmétique binaire, désire effectuer une conversion binaire-décimal. Pour convertir une nombre N d une base source à une base destination en utilisant l arithmétique de la base source, on divise le nombre N par la base destination en utilisant l arithmétique de base source, jusqu à ce que le quotient soit nul. La représentation de N dans la base destination est alors donnée par la séquence renversée des restes. Pierre Marchand, 2001 78 5

Exemples : Convertir 27 10 en base 4 : 27 27 / 4 = 6, reste 3 10 6 / 4 = 1, reste 2 1 / 4 = 0, reste 1 2710= 1234 Pierre Marchand, 2001 79 Exemples : Convertir 1000 1110 2 en base 10 1000 1110 2 / 1010 2 = 1110 2, reste 0010 2 1110 / 1010 = 0001, reste 0100 2 0001 / 1010 = 0000, reste 0001 2 1000 1110 2 = 0001 0100 0010 = 142 10 en BCD compacté ou 0000 0001 0000 0100 0000 0010 en BCD non compacté Pierre Marchand, 2001 80 6

Conversion hexadécimal-décimal et décimal-hexadécimal d entiers à l aide de la table de l appendice 4.1 du supplément La table hexadécimal-décimal est basée sur le principe qu un nombre comme 14A6 16 est la somme de 1000 16 + 400 16 + A0 16 + 6. On va donc chercher la valeur décimal correspondante de chacun dans la table et on en fait la somme: 4096 10 + 1024 10 + 160 10 + 6 = 5286 10 Cette méthode peut être utilisée pour la conversion binairedécimal par programmation et s avère très rapide. Pierre Marchand, 2001 81 Conversion hexadécimal-décimal et décimal-hexadécimal d entiers à l aide de la table de l appendice 4.1 du supplément On pourrait faire une table décimal-hexadécimal pour la conversion inverse. On peut également utiliser la même table que plus haut avec quelques calculs supplémentaires. On cherche dans la table la plus grande valeur décimale qui soit inférieure au nombre à convertir. On soustrait ce nombre, et on recommence avec le reste. 5286 10-4096 10 = 1190 10 -> 1000 16 1190 10-1024 10 = 166 10 -> + 400 16 166 10-160 10 = 6 10 -> + A0 16 6 10-6 10 = 0 -> + 6 16 = 14A6 16 Pierre Marchand, 2001 82 7

Conversion à partir l ASCII Exemple : Supposons que l utilisateur a tapé 327. On retrouve en mémoire les caractères ASCII 3, 2 et 7 qui ont la représentation : 0011 0011 0011 0010 0011 0111 On soustrait 0011 0000 (30 16 ou 0 ) de chacun de ces caractères, ce qui nous donne la représentation en BCD non compacté : 0000 0011 0000 0010 0000 0111 On utilisera ces octets pour faire la conversion BCD-binaire. Pierre Marchand, 2001 83 Conversion vers l ASCII De la façon inverse, après qu on a effectué une conversion binaire décimal, on a une série d octets qui constituent la représentation BCD non compacté du résultat. On n a qu à ajouter 30 16 à chacun pour obtenir la représentation ASCII du nombre. Par exemple : 0000 0011 0000 0010 0000 0111 + 0011 0000 0011 0000 0011 0000 = 0011 0011 0011 0010 0011 0111 3 2 7 Pierre Marchand, 2001 84 8

N = a n B n + a n-1 B n-1 + + a 1 B 1 + a 0 B 0 + a -1 B -1 + a -2 B -2 + En binaire, a i = 0 ou 1 et B = 2 N = a n 2 n + a n-1 2 n-1 + + a 1.2 + a 0 + a -1 2-1 + a -2 2-2 + = a n 2 n + a n 1 2 n 1 1 +...+ a 1.2 + a 0 + a 1 2 + a 2 Cette dernière formule peut donc servir de conversion binairedécimal. Exemple : 0,011 2 = 0 1 2 + 1 1 4 + 1 1 8 = 0,25 10 + 0,125 10 = 0,325 10 1 4 + a 3 1 8 +... Pierre Marchand, 2001 85 0,5625 10 0, 5625 x 2 1, 125 x 2 0, 25 x 2 0, 5 x 2 1, 0 x 2 0, 0 Réponse : 0,10010000 2 Pour passer du décimal à une autre base, il suffit de multiplier par la base en question au lieu de 2. Pierre Marchand, 2001 86 9

Pour un nombre constitué d une partie entière et d une partie fractionnaire, on convertit les deux parties séparément, la partie entière avec l une des méthodes de conversion des entiers, la partie fractionnaire avec les méthodes présentées dans la présente section. Exemple: convertir 123,21 4 en décimal 123 4 = 1 4 2 + 2 4 + 3 = 27 10 0,21 4 = 2 4-1 + 1 4-2 = 2 x 0,25 + 1 0,0625 = 0,5625 10 Réponse : 27,5625 10 Pierre Marchand, 2001 87 Convertir 27,5625 10 en base 4 : 27 / 4 = 6, reste 3 6 / 4 = 1, reste 2 1 / 4 = 0, reste 1 -> 123 4 0, 5625 x 4 2, 25 x 4 1, 0 x 4 0, 0 Réponse : 123,210000 4 Pierre Marchand, 2001 88 10

Conversion décimal-binaire et binaire décimal à l aide de la table de l appendice 4.2 du supplément Même principe que pour les entiers. Pierre Marchand, 2001 89 Virgule fixe Partie entière Partie fractionnaire 32, 32 Inconvénients : étendue de représentation limitée 32 bits seulement dans la partie entière 32 bits seulement dans la partie fractionnaire Perte de précision pour les petits nombres Complexité de traitement de la virgule lors d opérations telles que la multiplication et la division Pierre Marchand, 2001 90 11

Virgule fixe Exemples : 1,0 = 00000001,00000000 16-1,0 = FFFFFFFF,00000000 16 0,5 = 00000000,80000000 16-0,5 = FFFFFFFF,80000000 16 Plus petit nombre positif : 00000000,00000001 = 1 / 4 294 967 296 Plus grand nombre positif : 7FFFFFFF,FFFFFFFF = +2 147 483 647,999999999767 Plus grand nombre négatif : 80000000,00000000 = -2 147 483 648, 999999999767 Plus petit nombre négatif : FFFFFFFF,FFFFFFFF = -1 / 4 294 967 296 Pierre Marchand, 2001 91 N = (1) s M B E où : M = mantisse B = base E = exposant s = signe de la mantisse Exemples: 101 10 = 1,01 10 2-5 10 = - 101 2 = - 1,01 2 2 5 10 = 101 2 = 5 16 = 0,0101 16 1 Pierre Marchand, 2001 92 12

Norme IEEE 754 de simple précision La mantisse M est normalisée sous la forme 1,f et l exposant est ajusté en conséquence. La partie f est codée sur 23 bits. On ajoute 127 à E et le total est codé sur 8 bits. s est le signe de la mantisse. s E+127 f 8 23 32 N = (-1) s 2 E 1,f Pierre Marchand, 2001 93 Norme IEEE 754 de simple précision Exemple : 1000 10 = 3E8 16 = 1111101000 2 = 1,111101000 2 9 s = 0 car nombre positif E = 9 donc E + 127 = 136 = 10001000 2 M = 1,111101000 donc f =,111101000 0 10001000 11110100000000000000000 qu on peut écrire 447A0000 IEEE en groupant les bits 4 par 4 et en les codant en hexadécimal. Pierre Marchand, 2001 94 13

Norme IEEE 754 de simple précision Exemple : Convertir le nombre de simple précision 40500000 IEEE en décimal. 0 10000000 10100000000000000000000 s = 0 donc signe = + E + 127 = 128, donc E = 1 M = 1,f = 1,101 N = +1,101 2 2 1 = 11,01 2 2 0 = 3,25 10 Pierre Marchand, 2001 95 Norme IEEE 754 de simple précision Exemples : +0 = 00000000 IEEE -0 = 80000000 IEEE +1 = 3F800000 IEEE -1 = BF800000 IEEE +2 = 40000000 IEEE -2 = C0000000 IEEE + = 7F800000 IEEE - = FF800000 IEEE Pierre Marchand, 2001 96 14

Norme IEEE 754 de double précision La mantisse M est normalisée sous la forme 1,f et l exposant est ajusté en conséquence. La partie f est codée sur 52 bits. On ajoute 1023 à E et le total est codé sur 11 bits. s est le signe de la mantisse. s E+1023 f 11 52 64 Pierre Marchand, 2001 97 Étendue de représentation En simple précision, la représentation des nombres normalisés positifs non nuls va de 00800000 IEEE à 7F7FFFFF IEEE, soit : 1,000000000 x 2-126 à 1,1111111111 x 2 127 9,4039548 10-38 à 3,4028235 10 +38. En double précision, elle va de 0010000000000000 IEEE à 7FEFFFFFFFFFFFFF IEEE, soit : 1,0000000000... 2-1022 à 1,11111111111... 2 1023 2,22407385851 10-308 à 1,797693134862316 10 308 Pierre Marchand, 2001 98 15

Nombres dénormalisés En simple précision, si l exposant E est -127 (représentation 00000000) et que les bits de la mantisse ne sont pas tous nuls, le nombre représenté est : N = (s) -1 x 2-126 0,f On peut ainsi, malgré une perte de précision, étendre la représentation jusqu à 2-149, i.e. 10-45. Pierre Marchand, 2001 99 Les NaN Les représentations commençant par 7F ou FF en simple précision et dont les autres bits ne sont pas tous 0 représentent des NaN (Not a Number). Ces NaN sont utilisés pour signaler des messages d erreur. Pierre Marchand, 2001 100 16

Sources d erreur Erreur d arrondi ou de troncature Débordement de capacité Sous-débordement de capacité Division par 0 Opérations invalides :, 0, 0 /, 0 / 0, etc. Pierre Marchand, 2001 101 Addition et soustraction On doit : 1. Extraire les mantisses et les exposants 2. Ajuster les exposants et les mantisses pour que les deux nombres aient l exposant du plus grand des deux. 3. Effectuer l addition ou la soustraction des mantisses 4. Normaliser la mantisse résultante s il y a lieu 5. Replacer le résultat, mantisse et exposant, dans le format IEEE. Pierre Marchand, 2001 102 17

Addition et soustraction Exemple : 40400000 IEEE + 3F000000 IEEE = 0 10000000 10000000000000000... + 0 01111110 00000000000000000... = + 2 128-127 1,100000 + 2 126-127 1,000000... = 1,1 2 1 + 1,0 2-1 = 1,1 2 1 + 0,01 2 1 = 1,11 2 1 = 0 10000000 11000000000000000000000 = 40600000 IEEE Pierre Marchand, 2001 103 Multiplication et division A = a 2 p et B = b 2 q, alors : Pierre Marchand, 2001 104 A B = ab 2 p+q A / B = (a/b) 2 p-q On doit : 1. Extraire les mantisses, les signes et les exposants 2. Additionner ou soustraire les exposants suivant le cas 2. Effectuer le produit ou le quotient des mantisses 4. Normaliser la mantisse résultante s il y a lieu 5. Ajuster le signe s il y a lieu 6. Replacer le résultat, signe, mantisse et exposant, dans le format IEEE. 18

Multiplication et division Exemple: 40A00000 C0C00000 = 0 10000001 01000000000000000... 1 10000001 10000000000000000 = + 2 129-127 1,01-2 129-127 1,1 = - 1,01 2 2 1,1 2 2 = - 1,1110 2 4 = 1 10000011 11100000000000000000000 = C1F00000 IEEE Pierre Marchand, 2001 105 3.3.4 Décimaux codés en binaire Code BCD = code pondéré 8-4-2-1 comme le binaire naturel Code excédent-3 : chiffre = binaire + 3 Code 2 dans 5 : chiffre décimal codé sur 5 bits dont deux sont 1 Code biquinaire : chiffre décimal codé sur 7 bits, dont 1 dans les deux positions de gauche et 1 dans les 5 positions de droite est 1. Les deux derniers codes permettent la détection d erreurs. Pierre Marchand, 2001 106 19

3.3.4 Décimaux codés en binaire décimal BCD excédent-3 2 dans 5 biquinaire 0 0000 0011 00011 01 00001 1 0001 0100 00101 01 00010 2 0010 0101 00110 01 00100 3 0011 0110 01001 01 01000 4 0100 0111 01010 01 10000 5 0101 1000 01100 10 00001 6 0110 1001 10001 10 00010 7 0111 1010 10010 10 00100 8 1000 1011 10100 10 01000 9 1001 1100 11000 10 10000 Pierre Marchand, 2001 107 Conversion rapide des grands nombres décimaux en binaire Nous utilisons l'algorithme de la division par la base destination en arithmétique de base 10, sauf que nous choisissons la base 65536 (2 16 ). Exemple : Convertir 36 000 000 000 en binaire 1 e étape 36 000 000 000 / 65 536 =549 316, reste 26 624 549 316 / 65 536 = 8, reste 25 028 8 / 65 536 = 0, reste 8 Donc : 36 000 000 000 = 8 x 65536 2 + 25028 x 65536 1 + 26624 Pierre Marchand, 2001 108 20

Conversion rapide des grands nombres décimaux en binaire 2 e étape Comme 65 536 = 256 2, on représente ensuite chacun des termes en base 256. 25 028 / 256 = 97, reste 196 26 624 / 256 = 104, reste 0 Donc : 36 000 000 000 = 8 x 256 4 + 97 x 256 3 + 196 x 256 2 + 104 x 256 1 + 0 x 256 0 Pierre Marchand, 2001 109 Conversion rapide des grands nombres décimaux en binaire 3 e étape Comme 256 = 16 2, on représente ensuite chacun des termes en base 16. 97 / 16 = 6, reste 1 196 / 16 = 12, reste 4 104 / 16 = 6, reste 8 0 / 16 = 0, reste 0 Donc 36 000 000 000 = 8 x 16 8 + 6 x 16 7 + 1 x 16 6 + 12 x 16 5 + 4 x 16 4 + 6 x 16 3 + 8 x 16 2 + 0 x 16 1 + 0 x 16 0 Et finalement : 36 000 000 000 = 861C46800 16 Pierre Marchand, 2001 110 21