Représentation des nombres en langage informatique et conséquences

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

Représentation des Nombres

Logiciel de Base. I. Représentation des nombres

IFT2880 Organisation des ordinateurs et systèmes

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

Conversion d un entier. Méthode par soustraction

V- Manipulations de nombres en binaire

Informatique Générale

Chapitre 10 Arithmétique réelle

Représentation d un entier en base b

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

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

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

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

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Architecture de l ordinateur

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

Algorithme. Table des matières

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

Chapitre 1 I:\ Soyez courageux!

I- Définitions des signaux.

Chapitre 13 Numérisation de l information

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Licence Sciences et Technologies Examen janvier 2010

ELEC2753 Electrotechnique examen du 11/06/2012

Les portes logiques. Voici les symboles des trois fonctions de base. Portes AND. Portes OR. Porte NOT

Chap17 - CORRECTİON DES EXERCİCES

Numérisation du signal

- affichage digital - aiguille

Une version javascript sera disponible directement dans le cours prochainement.

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Le multiplexage. Sommaire

TD : Codage des images

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

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

CM2B Ste Marthe NOMBRES CROISES

Puissances d un nombre relatif

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

Introduction à NetCDF

Continuité et dérivabilité d une fonction

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

INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE

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

Initiation au binaire

Acquisition et conditionnement de l information Les capteurs

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

La fonction exponentielle

La conversion de données : Convertisseur Analogique Numérique (CAN) Convertisseur Numérique Analogique (CNA)

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

DM 1 : Montre Autoquartz ETA

EVALUATIONS FIN CM1. Mathématiques. Livret élève

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

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

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

Complément d information concernant la fiche de concordance

CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!»

Introduction à l étude des Corps Finis

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

Architecture matérielle des systèmes informatiques

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

TP 1. Prise en main du langage Python

Partie Agir : Défis du XXI ème siècle CHAP 20-ACT EXP Convertisseur Analogique Numérique (CAN)

Liste de vérification des exigences Flexfone

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

Etudier l influence de différents paramètres sur un phénomène physique Communiquer et argumenter en utilisant un vocabulaire scientifique adapté

Le codage informatique

Cours d électricité. Circuits électriques en courant constant. Mathieu Bardoux. 1 re année

BTS Groupement A. Mathématiques Session Spécialités CIRA, IRIS, Systèmes électroniques, TPIL

Mathématiques appliquées à l informatique

EVALUATIONS MI-PARCOURS CM2

Introduction à MATLAB R

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

La persistance des nombres

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

Organisation des Ordinateurs

ET LO GICIEL D UN S YS T EME IN FORMATIQUE

Vous revisiterez tous les nombres rencontrés au collège, en commençant par les nombres entiers pour finir par les nombres réels.

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

Pourquoi investir en bourse? Pour gagner nettement plus qu avec un livret

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

Mesures et incertitudes

avec des nombres entiers

Unités, mesures et précision

Chapitre 22 : (Cours) Numérisation, transmission, et stockage de l information

Formules et Approches Utilisées dans le Calcul du Coût Réel

Protocoles réseaux. Abréviation de Binary Digit. C'est la plus petite unité d'information (0, 1).

Fonctions linéaires et affines. 1 Fonctions linéaires. 1.1 Vocabulaire. 1.2 Représentation graphique. 3eme

IV- Comment fonctionne un ordinateur?

Seconde Généralités sur les fonctions Exercices. Notion de fonction.

Université Paris-Dauphine DUMI2E 1ère année, Applications

nom : Collège Ste Clotilde

! analyse du fonctionnement

Les puissances La notion de puissance La puissance c est l énergie pendant une seconde CHAPITRE

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

1 Introduction au codage

Pour monter un escalier, on peut, à chaque pas, choisir de monter une marche ou de monter deux marches. Combien y a-t-il de façons de monter un

TP a Notions de base sur le découpage en sous-réseaux

Transcription:

CHAPITRE Représentation des nombres en langage informatique et conséquences La création de la numération est un des faits les plus marquants de l histoire de l humanité. Si la plupart des civilisations ont adopté le système décimal, c est qu il a toujours été naturel de compter sur ses doigts. Les chinois, quant à eux, comptaient jusqu à 00 000 sur une main et dix milliards sur les deux mains. Les Mayas, Aztèques, Celtes et Basques, sans doute plus sportifs, utilisaient eux les orteils, donc la base 0. Les Sumériens ont bizarrement utilisé la base 60, et les Romains la base Les ordinateurs et les programmes mémorisent, transmettent et transforment des données aussi variées que des grandeurs numériques (nombres, textes, code postal, entier relatif, pixels, images...) mais aussi des grandeurs analogiques (son, vitesse de rotation ). Pourtant, quand on les observe à plus petite échelle, les ordinateurs ne manipulent que des objets beaucoup plus simples : des 0 et des. Dans ce chapitre, nous verrons comment cette suite de 0 et de suffit à représenter la plupart des nombres (des entiers naturels aux nombres à virgule).. Représentation des nombres en langage informatique.. Les différentes bases de représentation possibles Les différentes bases de représentation Depuis le Moyen- Âge, on écrit les nombres en représentation décimale ou en base dix. Ainsi, pour écrire un entier naturel 𝑁 quelconque, on écrit, de droite à gauche, le nombre de paquets de un, le nombre de paquets de dix, le nombre de paquets de cent, le nombre de paquets de mille... Chacun de ces nombres étant compris entre zéro et neuf, seuls dix chiffres sont nécessaires : 0,,, 3, 4, 5, 6, 7, 8 et 9 Le choix de faire des paquets de dix est conventionnel : on aurait tout aussi bien pu décider de faire des paquets de deux, de huit, de douze, de vingt... Ainsi, lorsqu on décide de faire des paquets de deux, on écrit les nombres en base deux, ou représentation binaire, n utilisant que deux chiffres : 0 et Tous les nombres sont formés à partir de ces seuls deux chiffres et se prononcent chiffre par chiffre (par exemple, le nombre qui se représente par 4 en base dix se représente par 00 en base deux et se prononce un- zéro- zéro). Voici la liste des douze premiers nombres en représentation décimale et en représentation binaire : Base dix Base deux 0 0 0 3 4 5 6 7 8 9 0 00 0 0 000 00 00 0 00

Chapitre : Représentation des nombres Remarque : quand une suite de chiffres exprime un nombre dans une base différente de la base décimale, on indique la base en indice. Pour la base, on peut également souligner le résultat. Passage de la représentation décimale à la représentation binaire Pour passer de la base de représentation décimale à la base de représentation binaire, on effectue des divisions successives par du nombre en base dix, jusqu à obtenir 0 en quotient. On lit alors les restes successifs de droite à gauche et de bas en haut. Exemple : expression en base deux du nombre représenté par 3 en base dix Ainsi le chiffre qui s écrit 3 en représentation décimale s écrit 0 ou 0 en représentation binaire (à prononcer un- un- zéro- un). Passage de la représentation binaire à la représentation décimale Pour passer de la base de représentation binaire à la base de représentation décimale, on lit les bits de droite à gauche et on leur associe la puissance de correspondant à leur rang dans le nombre en base deux : Position du bit 0 3 4 5 6 7 8 Puissance de correspondante! =! =! = 4! = 8! = 6! = 3! = 64! = 8! = 56 Exemple : expression en base dix du nombre représenté par 000 en base deux Représentation, binaire,,, 0", 0" 0", Position,du,bit, 6" 5" 4" 3" " " 0" Puissance,de, deux, correspondante, Représentation, décimale,! " = 64"! " = 3"! " = 6"! " = 8"! " = 4"! " = "!! +!! + 0! +!! + 0! + 0! +!! " = 64 + 3 + 8 + " = 05"! " = " " Ainsi le chiffre qui s écrit 000 ou 000 en représentation binaire s écrit 05 en représentation décimale.

Chapitre : Représentation des nombres 3.. La représentation binaire : source du langage informatique La mémoire des ordinateurs est constituée d une multitude de circuits électroniques qui ne peuvent être que dans deux états : sous tension ou hors tension. On appelle ces états 0 et. Une telle valeur (0 ou ) est dite booléenne. On l appelle booléen ou bit (pour binary digit en anglais) et un circuit à deux états s appelle un circuit mémoire un bit. L état dans lequel se trouve un circuit mémoire un bit est représenté par le symbole 0 ou par le symbole. L état d un circuit composé de plusieurs de ces circuits est représenté par une suite finie de 0 et de. Par exemple, 00 (prononcer un- zéro- zéro) décrit l état d un circuit composé de trois circuits mémoire un bit, respectivement dans l état, 0 et 0. Les ordinateurs comptent donc naturellement en base deux et chaque circuit de l ordinateur représente un des deux chiffres de cette base : 0 ou. Dans la mémoire d un ordinateur, tous les chiffres sont donc écrits en représentation binaire. Les circuits mémoire un bit sont groupés par huit, définissant ce qu on appelle un octet. L ordinateur représente alors les nombres en notation binaire sur un, deux, quatre ou huit octets, soit 8, 6, 3 ou 64 bits. Nombre d octets utilisés 4 8 Nombre de bits correspondant 8 6 3 64.3. Représentation binaire des entiers naturels Nous venons de voir qu en langage informatique, les nombres sont représentés en base deux, en utilisant 8, 6, 3 ou 64 bits. Cela permet de représenter les nombres : - de 0 à :! = 56 nombres sur un octet donc 8 bits - de 0 à :!" = 65 536 nombres sur deux octets donc 6 bits - de 0 à =!" =4 94 967 96 nombres sur quatre octets donc 3 bits - de 0 à =!" =8 446 744 073 709 55 66 nombres sur huit octets donc 64 bits. Ainsi : Nombre d octets utilisés Nombre de bits correspondant Intervalle de nombres représentés en base 0 4 8 8 = 8 8 = 6 4 8 = 3 8 8 = 64 0 à 55 0 à 65535 0 à 49496795 0 à 84467440737095565.4. Représentation binaire des entiers relatifs Voyons maintenant comment étendre aux entiers relatifs la représentation binaire des entiers naturels que nous venons de voir. Une solution pourrait consister à réserver un bit pour le signe de l entier et à utiliser les autres pour représenter sa valeur absolue : on coderait alors la valeur absolue sur 7, 5, 3 ou 63 bits. Cependant, cette méthode a plusieurs inconvénients (notamment l existence de deux zéros, l un positif et l autre négatif).

4 Chapitre : Représentation des nombres On préfère donc utiliser la notation en complément à deux. Dans cette représentation, et en prenant comme exemple un codage binaire sur octets donc 6 bits (comprenant donc les entiers naturels entre 0 et 65535), on représente les entiers relatifs compris entre 3 768 et 3 767. Si l entier relatif 𝑥 que l on cherche à représenter est positif ou nul, on utilise simplement sa représentation binaire d entier naturel. Par contre, si cet entier relatif 𝑥 est négatif, on le représente par l entier naturel 𝑥 +!" = 𝑥 + 65 536, qui est compris entre 3 768 et 65 535. Remarquons qu il est facile de déterminer le signe d un entier représenté sous cette forme : un entier relatif positif ou nul est représenté par un entier naturel dont le premier bit vaut 0 alors qu un entier relatif strictement négatif est représenté par un entier naturel dont le premier bit vaut..5. Représentation binaire des nombres à virgule Représentation des nombres à virgule flottante La notation binaire permet aussi de représenter des nombres à virgule. En notation décimale, les chiffres à gauche de la virgule représentent des unités, des dizaines, des centaines... et ceux à droite de la virgule, des dixièmes, des centièmes, des millièmes... De même, en binaire, les chiffres à droite de la virgule représentent des demis, des quarts, des huitièmes... Toutefois, cette manière de faire ne permet pas de représenter des nombres très grands ou très petits (comme le nombre d Avogadro ou la constante de Planck). On utilise plutôt une représentation (similaire à la notation scientifique mais en base deux plutôt qu en base dix) dans laquelle un nombre 𝑥 s écrit : 𝑥 =! 𝑚! 𝑠 est le signe du nombre : le signe + est représenté par 𝑠 = 0 et le signe par 𝑠 =. l exposant 𝑛 est un entier relatif compris entre 04 et 03 (en codage double précision sur 8 bits), représenté en notation en complément à deux (donc compris entre et 048). la mantisse 𝑚 est un nombre binaire à virgule compris entre inclus et exclu, comprenant 5 chiffres après la virgule. Comme cette mantisse est comprise entre et, elle a toujours le seul chiffre avant la virgule ; il est donc inutile de le représenter et on utilise les 5 bits pour représenter les 5 chiffres après la virgule, ce qui donne une précision réelle de 53 bits. Exemple : Trouvons en base dix l équivalent du nombre à virgule 𝑁 représenté en notation binaire par : 00000000000000000000000000000000000000000000000000 Le premier chiffre de ce nombre correspond au signe : 𝑠 = 𝑁 < 0 L exposant est ensuite codé sur les bits suivants : 𝑛 = 0000000! 𝑛 = 094 en notation en complément à deux 𝑛 = 094 03 = 7 La mantisse correspondant enfin aux 5 derniers bits (en tenant compte du implicite) : 𝑚 =,0000000000000000000000000000000000000000000! 𝑚 = +! +! +! +! +! +!" +!" +!" +!" 0677 𝑚= 307 Le nombre 𝑁 se représente donc en base dix par : 0677!" 𝑁= = 3,74 0!" 307

Chapitre : Représentation des nombres 5 Les nombres représentés sous cette forme sont appelés nombres à virgule flottante, puisque la virgule de la mantisse peut être déplacée par le biais de l exposant. Le codage d un nombre à virgule nécessite donc : Le cas particulier du zéro Signe s Exposant n Mantisse m Nombre de bits utilisés 5 Dans la représentation précédente, puisque la mantisse est censée toujours commencer par un implicite, il n est en principe pas possible de représenter le zéro. Par convention, on décide qu un nombre vaut zéro si et seulement si tous les bits de son exposant et de sa mantisse valent 0. Il reste un choix pour le bit de signe, il y a donc un zéro positif et un zéro négatif dans les nombres à virgule flottante. Codage du zéro positif : Signe Exposant Mantisse 0 00000000000 0000000000000000000000000000000000000000000000000000 Codage du zéro négatif : Signe Exposant Mantisse 00000000000 0000000000000000000000000000000000000000000000000000. Représentation des nombres à virgule.. Dépassement de capacité Dans le codage informatique, les nombres représentés sont limités par le nombre de bits utilisés. Pour la représentation des entiers naturels ou relatifs, si on dépasse la capacité de codage, le bit le plus à gauche est perdu : on appelle ce phénomène dépassement arithmétique (ou overflow en anglais). Il faut alors changer de représentation pour éviter de perdre la valeur du résultat. En Python, ce changement de représentation est automatique et la seule limite pour la représentation des entiers, qu ils soient naturels ou relatifs, est la mémoire disponible sur la machine. Remarque : cette propriété est loin d être le cas dans tous les langages de programmation. La plupart du temps, si le résultat d un calcul dépasse les limites de la représentation des entiers, les bits surnuméraires sont purement et simplement perdus. De même que les entiers, les nombres à virgule flottante possèdent certaines limites inévitables. En effet, les nombres à virgule flottante étant représentés sur un nombre donné de bits, il existe forcément un nombre maximal représentable dans ce format. Plus précisément, 64 bits ne suffisent plus si la représentation du nombre demande : un exposant supérieur à 03, qui est le plus grand représentable sur bits. un exposant égal à 03 et une mantisse supérieure à la plus grande mantisse représentable sur 5 bits, c est- à- dire (implicite) suivi de 5 fois le chiffre après la virgule. Tout calcul dont le résultat dépasse cette limite produit une situation qui est également appelée dépassement arithmétique, produisant les nombres spéciaux + et, selon le signe du résultat du calcul.

6 Chapitre : Représentation des nombres Un autre dépassement de capacité, qui n existe pas pour les entiers, se produit lorsque l on veut représenter un nombre trop proche de 0, c est- à- dire représenter un nombre dont : l exposant est inférieur à 0, le plus petit exposant représentable sur bits le nombre est inférieur en valeur absolue au plus petit nombre dénormalisé. On parle alors de dépassement par valeurs inférieures ou de soupassement arithmétique (en anglais underflow). Selon les cas, le résultat d un calcul qui tombe dans cette plage de valeurs peut soit être arrondi à zéro (le signe du résultat est cependant conservé), soit produire une erreur... Problème de précision et arrondis Il est rare que le résultat d un calcul faisant intervenir deux nombres à virgule flottante donne un résultat représentable exactement sur 64 bits. Exemple : le nombre qui se représente par 0,4 en base dix admet pour développement en base deux, le développement périodique infini suivant : 0! + 0! +! +! + 0! + 0! +! +! + 0! + 0! + +!"!! = 0,0000000 Si l on essaye de construire une représentation sur 64 bits, on obtient : Signe Exposant Mantisse Bits non représentés 0 0 0 00000000 00000000 0000 La représentation en virgule flottante sera donc forcément une valeur approchée de ce nombre. Par défaut, les nombres à virgule sont arrondis à la valeur de mantisse la plus proche. La valeur approchée choisie pour la représentation binaire de 0,4 est donc la suivante : 0,0 00 00 00 00 00 00 00 00 00 00 00 00 00 = 7 05 759 403 79 794 8 04 398 509 48 984 0,40000000000000000446049503 On retiendra qu il n est pas possible de savoir de façon certaine si le résultat d un calcul est égal à sa valeur théorique. La principale conséquence en est qu un test du type a = b n a en général pas de sens si a et b sont deux nombres à virgule flottante, puisque ceux- ci ont pu subir des erreurs d arrondis. On remplacera donc un tel test par une condition de la forme abs(a-b) < epsilon où epsilon est une valeur proche de zéro, choisie en fonction du problème à traiter et de l ordre de grandeur des erreurs auxquelles on peut s attendre (ou qu on peut tolérer) sur a et b..3. Exemples concrets sur les erreurs d arrondis Voici quelques exemples concrets de cas où les erreurs d'arrondi ont conduit à des catastrophes : Missile Patriot En février 99, pendant la Guerre du Golfe, une batterie américaine de missiles Patriot, à Dharan (Arabie Saoudite), a échoué dans l interception d un missile Scud irakien. Le Scud a frappé un baraquement de l armée américaine et a tué 8 soldats. La commission d enquête a conclu à un calcul incorrect du temps de parcours, dû à un problème d arrondi. Les nombres étaient représentés en virgule fixe sur 4 bits, donc 4 chiffres binaires. Le temps était compté par l horloge interne du système en /0 de seconde. Malheureusement, /0 n a pas d écriture finie dans le système binaire : /0 = 0, (dans le système décimal) = 0,0000000000000... (dans le système binaire). L ordinateur de bord arrondissait /0 à 4 chiffres, d où une petite erreur dans le décompte du

Chapitre : Représentation des nombres 7 temps pour chaque /0 de seconde. Au moment de l attaque, la batterie de missile Patriot était allumée depuis environ 00 heures, ce qui avait entraîné une accumulation des erreurs d arrondi de 0,34 s. Pendant ce temps, un missile Scud parcourt environ 500 m, ce qui explique que le Patriot soit passé à côté de sa cible. Ce qu il aurait fallu faire c était redémarrer régulièrement le système de guidage du missile. Explosion d Ariane 5 Le 4 juin 996, une fusée Ariane 5 a explosé 40 secondes après l allumage. La fusée et son chargement avaient coûté 500 millions de dollars. La commission d enquête a rendu son rapport au bout de deux semaines. Il s agissait d une erreur de programmation dans le système inertiel de référence. À un moment donné, un nombre codé en virgule flottante sur 64 bits (qui représentait la vitesse horizontale de la fusée par rapport à la plate- forme de tir) était converti en un entier sur 6 bits. Malheureusement, le nombre en question était plus grand que 3768 (overflow), le plus grand entier que l on peut coder sur 6 bits, et la conversion a été incorrecte : les systèmes de sécurité, détectant une erreur, ont fait exploser la fusée! Bourse de Vancouver Un autre exemple où les erreurs de calcul on conduit à une erreur notable est le cas de l indice de la Bourse de Vancouver. En 98, elle a crée un nouvel indice avec une valeur nominale de 000. Après chaque transaction boursière, cet indice était recalculé et tronqué après le troisième chiffre décimal et, au bout de mois, la valeur obtenue était 54,88, alors que la valeur correcte était 098,8. Cette différence s explique par le fait que toutes les erreurs d arrondi étaient dans le même sens : l opération de troncature diminuait à chaque fois la valeur de l indice

8 Chapitre : Représentation des nombres 3. Pour s entraîner 3.. Nombre d états possible pour la mémoire d un ordinateur ) On imagine un ordinateur dont la mémoire est constituée de quatre circuits mémoire un bit. Quel est le nombre d états possibles de la mémoire de cet ordinateur? ) Même question pour un ordinateur dont la mémoire est constituée de dix circuits mémoire un bit. Et pour un ordinateur dont la mémoire est constituée de 3 milliards de tels circuits? 3.. Passage d une base de représentation à l autre ) Trouver la représentation en base huit du nombre par 87 en base dix. ) Trouver la représentation en base dix du nombre 75 8. 4) Trouver la représentation en base deux du nombre représenté par 4 en base dix. 5) Trouver la représentation en base dix du nombre 00 00. 3.3. Notation en complément à deux ) Trouver les représentations binaires sur huit bits des entiers relatifs 0, 7 et - 7. ) Trouver les représentations décimales des entiers relatifs dont les représentations binaires sur huit bits sont 0000 et 0000. 3) Calculer la représentation sur huit bits de l entier relatif, puis celle de son opposé. 3.4. Représentation des nombres à virgule Trouver le nombre à virgule flottante représenté par le mot : 00000000000000000000000000000000000000000000000000