Architecture des ordinateurs : Codage binaire et hexadécimal Arithmétique des processeurs (J1IN4001)



Documents pareils
Chapitre 10 Arithmétique réelle

IFT2880 Organisation des ordinateurs et systèmes

Logiciel de Base. I. Représentation des nombres

Informatique Générale

Représentation des Nombres

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

Les opérations binaires

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

OPÉRATIONS SUR LES FRACTIONS

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

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

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Conversion d un entier. Méthode par soustraction

Architecture de l ordinateur

Compter à Babylone. L écriture des nombres

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

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

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

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

Architecture matérielle des systèmes informatiques

Licence Sciences et Technologies Examen janvier 2010

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

Cours Informatique 1. Monsieur SADOUNI Salheddine

Représentation d un entier en base b

V- Manipulations de nombres en binaire

Algorithme. Table des matières

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

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

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

Calculons avec Albert!

Conservation des documents numériques

Chapitre 1 I:\ Soyez courageux!

Glossaire des nombres

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

Mathématiques appliquées à l informatique

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

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

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Vers l'ordinateur quantique

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

Une version javascript sera disponible directement dans le cours prochainement.

Traitement numérique de l'image. Raphaël Isdant

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

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


Patentamt JEuropaisches. European Patent Office Numéro de publication: Office européen des brevets DEMANDE DE BREVET EUROPEEN

JPEG, PNG, PDF, CMJN, HTML, Préparez-vous à communiquer!

EXERCICES DE REVISIONS MATHEMATIQUES CM2

Rappels Entrées -Sorties

Conception de circuits numériques et architecture des ordinateurs

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

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

ET LO GICIEL D UN S YS T EME IN FORMATIQUE

QUESTION 1 {2 points}

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

REALISATION D UNE CALCULATRICE GRACE AU LOGICIEL CROCODILE CLIPS 3.

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

I- Définitions des signaux.

IV- Comment fonctionne un ordinateur?

avec des nombres entiers

Plan du cours Cours théoriques. 29 septembre 2014

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

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

Agent DEXXON DATAMEDIA GENNEVILLIERS

Chap17 - CORRECTİON DES EXERCİCES

LES TYPES DE DONNÉES DU LANGAGE PASCAL

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

nom : Collège Ste Clotilde

a) b)

Introduction à l étude des Corps Finis

Organisation des Ordinateurs

Théorie et codage de l information

Microprocesseur + Logiciel

UE C avancé cours 1: introduction et révisions

Concevoir son microprocesseur

Puissances d un nombre relatif

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

Activité 1 : Le triangle de Sierpinski

Hubert & Bruno Lundi 12 octobre 2009 SAINT-QUENTIN (02)

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

L informatique en BCPST

Projet Matlab : un logiciel de cryptage

Python - introduction à la programmation et calcul scientifique

Architecture des ordinateurs Introduction à l informatique

Calcul scientifique précis et efficace sur le processeur CELL

Solutions du chapitre 4

Unités, mesures et précision

Structures algébriques

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


Electronique Numérique

Circuits RL et RC. Chapitre Inductance

Correction TD algorithmique

Rappels d architecture

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

Transférer et enregistrer les photos sur l'ordinateur

TOUT CE QU IL FAUT SAVOIR POUR LE BREVET

A- Observez la vidéo A présentant le fonctionnement de deux objets techniques que nous

Transcription:

Architecture des ordinateurs : Codage binaire et hexadécimal Arithmétique des processeurs (J1IN4001) F. Pellegrini Université Bordeaux 1 Ce document est copiable et distribuable librement et gratuitement à la condition expresse que son contenu ne soit modifié en aucune façon, et en particulier que le nom de son auteur et de son institution d'origine continuent à y figurer, de même que le présent texte.

Notation positionnelle (1) La notation positionnelle représente un nombre sous la forme d'une séquence de chiffres Chaque chiffre représente le multiple d'une puissance d'un nombre appelé base Les puissances croissent à partir de zéro, de la droite vers la gauche Nous utilisons couramment la base 10, avec les chiffres de «0» à «9» 123 = 1 10 2 + 2 10 1 + 3 10 0 2

Notation positionnelle (2) La notation positionnelle présente de nombreux avantages : Utilise toujours les mêmes chiffres À la différence de l'écriture en chiffres romains : I = 1, V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000,... Permet d'écrire facilement de très grands nombres 3

Notation binaire La notation binaire utilise la base 2 et les chiffres «0» et «1» 101011 = 1 2 5 + 0 2 4 + 1 2 3 + 0 2 2 + 1 2 1 + 1 2 0 Pour lever toute ambiguïté,, on indique parfois la base (en décimal) à la fin d'un nombre 101011 2 101011 10 101011 2 = 43 10 4

Notation hexadécimale (1) La notation binaire est naturelle pour représenter les états de la mémoire d'un ordinateur On groupe les états sous forme de «mots» Mais elle est fastidieuse! Même les nombres les plus courants peuvent être longs à écrire Il faut trouver une notation plus économe en place 5

Notation hexadécimale (2) Il faut trouver une base qui : Se convertisse facilement en une écriture binaire Donc une puissance de 2 Soit plus grande que 2, mais pas trop grande Retenir 32 chiffres ou plus serait plutôt pénible... Permette d'écrire facilement des octets Donc dont le log 2 soit un diviseur de 8 : base 4 ou 16 Choix : base 16, ou «codage hexadécimal» 16 = 2 4, log 2 (16) = 4 = 8 / 2 6

Notation hexadécimale (3) Les chiffres hexadécimaux vont de «0» à «9», puis de «A» à «F» 0 0000 4 0100 8 1000 C 1100 1 0001 5 0101 9 1001 D 1101 2 0010 6 0110 A 1010 E 1110 3 0011 7 0111 B 1011 F 1111 B0A 16 = 11 16 2 + 0 16 1 + 10 16 0 = 2826 10 Dans de nombreux langages, on préfixe les nombres hexadécimaux par «0x...» ou «0X...» 7

Arithmétique entière (1) Avec n bits, on dispose de 2 n combinaisons possibles, qui permettent de représenter les nombres entiers naturels de 0 à 2 n 1 Les règles classiques de l'addition s'appliquent + 0 0 1 1 0 1 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 0 1 53 148 201 8

Arithmétique entière (2) Pour représenter des nombres négatifs, on peut transformer le bit de poids le plus fort en bit de signe, pour coder 2 n-1 nombres entiers positifs et 2 n-1 nombres entiers négatifs Lorsque le bit de signe est à 0, on considère que le nombre est positif, et on code les entiers naturels de 0 à 2 n-1 1 Bit de signe 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 1 1 1 127 9

Arithmétique entière (3) Lorsque le bit de signe est à 1, on considère que le nombre est négatif Plusieurs moyens sont envisageables pour coder les entiers négatifs avec les (n-1)( bits restants 10

Arithmétique entière (4) Codage des nombres négatifs au format naturel Même codage des n-1 bits restants que pour les nombres positifs Problèmes : 1 0 0 0 0 0 0 1-1 On a deux zéros (gaspillage d'une configuration) 0 0 0 0 0 0 0 0 +0 1 0 0 0 0 0 0 0-0 Nécessité d'un circuit spécifique pour la soustraction 11

Arithmétique entière (5) Pour éviter les problèmes du codage précédent, il faut un codage des nombres négatifs tel que : Le bit de signe soit à 1 Il n'y ait qu'un seul zéro On puisse utiliser la méthode d'addition standard pour additionner nombres positifs et négatifs 12

Arithmétique entière (6) En particulier, avec les contraintes précédentes, on veut : 0 0 0 0 0 0 0 1 1 + 1....... 0 0 0 0 0 0 0 0-1 0 La seule solution possible est donc : 1 1 1 1 1 1 1 1 qui génère une retenue en sortie, perdue par débordement («overflow») -1 13

Arithmétique entière (7) Pour représenter l'opposé d'un nombre entier, on prend son complément bit à bit, auquel on ajoute 1 Cette notation est appelée «complément à deux» Complément bit à bit +1 0 0 0 0 0 1 0 1 5 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1-5 14

Arithmétique entière (8) Ajouter un nombre à son opposé en complément à deux donne toujours zéro car : Ajouter un nombre à son complément bit à bit donne toujours un vecteur constitué uniquement de 1 Ajouter 1 à ce vecteur donne un vecteur constitué uniquement de 0, après débordement + 0 0 0 0 0 1 0 1 1 1 1 1 1 0 1 1 5-5 1 0 0 0 0 0 0 0 0 0 15

Arithmétique entière (9) Ce principe s'étend à toute addition entre entiers signés + 0 0 1 0 1 1 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 0 0 1 46-53 -7 16

Arithmétique entière (10) Principales valeurs en complément à deux pour un nombre sur 8 bits 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1-1 0 1 1 1 1 1 1 1 127 1 0 0 0 0 0 0 0-128 Le domaine de validité d'un nombre entier signé sur n bits est donc [-2 n-1,2 n-1-1] 17

Arithmétique flottante (1) Dans de nombreux calculs, il n'est pas possible d'utiliser des nombres entiers, et le domaine des nombres manipulés est très grand Masse de l'électron : 9 10-28 grammes Masse du soleil : 2 10 33 grammes Le domaine dépasse les 10 60 Nécessité de trouver un format adapté pour représenter de tels nombres avec un petit nombre de bits (32 ou 64 en pratique) 18

Arithmétique flottante (2) Comme le domaine à représenter est infini, il faut l'échantillonner de façon représentative On représentera donc un nombre à virgule sous la forme scientifique f : fraction, ou mantisse n = f 10 e e : exposant, sous la forme d'un entier signé 19

Arithmétique flottante (3) Par exemple : 3.14 = 0.314 10 1 = 3.140 10 0 0.00001 = 0.01 10-3 = 1.000 10-5 Le domaine dépend de la taille maximale de l'exposant La précision dépend du nombre maximal de chiffres significatifs de la mantisse 20

Arithmétique flottante (4) Il existe plusieurs représentations possibles du même nombre On privilégie toujours la forme normalisée, telle que le premier chiffre de la mantisse soit significatif, c'est-à-dire différent de zéro Cette forme maximise l'utilisation des chiffres significatifs de la mantisse, et donc la précision f = 0 ou f [1.0 ; 10.0 [ f = 10 0. 10-1 10-2 10-3 10-4 10-5 10-6... 21

Norme IEEE 754 (1) Ce standard définit trois formats de nombres à virgule flottante Simple précision (32 bits) Double précision (64 bits) Précision étendue (80 bits) Utilisé pour stocker les résultats intermédiaires de calculs au sein des coprocesseurs arithmétiques Utilise la base 2 pour les mantisses et le codage par excédent pour les exposants f = 2 0 2-1 2-2 2-3 2-4 2-5 2-6....... 22

Norme IEEE 754 (2) Format des nombres Commencent par un bit de signe (0 : positif) Exposants définis par excès (127 pour la simple précision et 1023 pour la double précision) 1 Valeurs minimum (0) et maximum (255 ou 2047) réservées pour des codages spéciaux 8 23 1 11 52 Signe Exposant Mantisse 23

Norme IEEE 754 (3) Une mantisse normalisée est constituée d'un chiffre 1, de la virgule, et du reste de la mantisse Comme le 1 de tête doit toujours être présent, il n'est pas nécessaire de le stocker La pseudo-mantisse de la norme IEEE 754 est donc constituée implicitement d'un 1 et de la virgule, suivis des 23 ou 52 bits effectifs On parle aussi de «significande» Le significande code des valeurs dans [1;2[ 24

Norme IEEE 754 (4) Exemple : représentation en simple précision du nombre 0.75 10 : 0.75 10 = 1.1 2-1 Le significande est donc :.1000...0 L'exposant est donc : -1 + 127 = 126 = 01111110 2 Le codage du nombre sur 32 bits est donc : 001111110 10000000000000000000000 3F400000 16 25

Norme IEEE 754 (5) Un des problèmes principaux avec les nombres à virgule flottante est la gestion des erreurs numériques telles que : Débordements («overflow») : le nombre est trop grand pour être représenté Débordements inférieurs («underflow») : le nombre est trop petit pour être représenté Résultat qui n'est pas un nombre («not-a- number», ou NaN), comme par exemple le résultat d'une division par 0 26

Norme IEEE 754 (6) En plus des nombres normalisés classiques, la norme IEEE 754 définit donc quatre autres types numériques Not-a-number : résultat impossible Infini : infinis positif et négatif, pour le débordement Zéro : zéros positif et négatif, pour le débordement inférieur («underflow») Nombres dénormalisés, pour les valeurs trop petites pour être représentables de façon normalisée 27

Norme IEEE 754 (7) Les nombres dénormalisés codent des nombres inférieurs au plus petit nombre normalisé représentable Exposant égal à 0 Mantisse non nulle (sinon c'est le codage du zéro) Le plus petit nombre normalisé est 1.0 2-126 Le plus grand nombre dénormalisé est 0.111... 2-127 (équivalent au précédent), et le plus petit est 0.00...01 2-127, c'est-à-dire 2-23 2-127 = 2-150 28

Norme IEEE 754 (8) Codage des nombres Normalisé : ± 0 < < 1 11 Toute configuration Dénormalisé : Zéro : Infini : NaN : ± 00000000 Tout sauf tous les bits à 0 ± 00000000 00000000000000000000000 ± 11111111 00000000000000000000000 ± 11111111 Tout sauf tous les bits à 0 29

Norme IEEE 754 (9) Tableau récapitulatif Simple précision Double précision Bit de signe 1 1 Bits d'exposant 8 11 Bits de mantisse 23 52 Taille totale 32 64 Codage de l'exposant Excédent 127 Excédent 1023 Variation de l'exposant -126 à +127-1022 à +1023 Plus petit nombre normalisé 2 2 Plus grand nombre normalisé < 2 < 2 Domaine décimal 10 à 10 10 à 10 30