Le codage des entiers. Un codage connu de tous les processeurs

Documents pareils
Les opérations binaires

Logiciel de Base. I. 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.

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

Conversion d un entier. Méthode par soustraction

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

IFT2880 Organisation des ordinateurs et systèmes

Cours Informatique 1. Monsieur SADOUNI Salheddine

Représentation des Nombres

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

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

Informatique Générale

Chapitre 10 Arithmétique réelle

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

V- Manipulations de nombres en binaire

Représentation d un entier en base b

Algorithme. Table des matières

Vers l'ordinateur quantique

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Une version javascript sera disponible directement dans le cours prochainement.

Système binaire. Algèbre booléenne

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 :

Chapitre 1 I:\ Soyez courageux!

Licence Sciences et Technologies Examen janvier 2010

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

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

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

Le codage informatique

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

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

Microprocesseur + Logiciel

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

CH.6 Propriétés des langages non contextuels

Rappels Entrées -Sorties

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

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

Raisonnement par récurrence Suites numériques

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

TD 1 - Transmission en bande de passe

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

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

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

Présentation du cours

Théorie et codage de l information

1 Introduction au codage

ET LO GICIEL D UN S YS T EME IN FORMATIQUE

Programmation C++ (débutant)/instructions for, while et do...while

Priorités de calcul :

FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE

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


INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

Chap17 - CORRECTİON DES EXERCİCES

Cours d Informatique

1 Année LMD-STSM Algorithmique et Programmation. Série de TD 2

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

Recherche dans un tableau

RESUME DE COURS ET CAHIER D'EXERCICES

Cours 1 : Qu est-ce que la programmation?

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

Programmation sous QT

a) b)

Introduction à NetCDF

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

Les bases de données Page 1 / 8

Concevoir son microprocesseur

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

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

IV- Comment fonctionne un ordinateur?

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

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

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

ISO/CEI NORME INTERNATIONALE

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

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

Mathématiques appliquées à l informatique

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

Initiation à la programmation en Python

TD : Codage des images

Algorithmique et Programmation, IMA

Glossaire des nombres

Procédure appropriée pour éditer les diagrammes avec ECM Titanium

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

Numérisation du signal

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

Manuel de référence du langage Exemples Les aventures de Docteur R.

DM 1 : Montre Autoquartz ETA

1.1 L EXPLORATEUR WINDOWS

CORRECTION EXERCICES ALGORITHME 1

IFT1215 Introduction aux systèmes informatiques

I- Définitions des signaux.

Conception de circuits numériques et architecture des ordinateurs

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Architecture des ordinateurs

CHRONIQUE de la société royale LE VIEUX-LIÈGE

Transcription:

Le codage des entiers Un codage connu de tous les processeurs

Quelle est la question Quels sont les codages de nombres intéressants à utiliser dans l'ordinateur? On pourrait considérer un codage unique pour tous les nombres (qui serait celui des nombres à virgule). Ce serait correct, mais pas efficace (les calculs seraient trop lents) Le programmeur aurait plus de travail

Deux exemples de calculs On répartit en deux tas égaux les 27 tonnes de sables de la cargaison Réponse attendue : 13,5 tonnes par tas On répartit en deux demi-groupes les 27 élèves du groupe 7 Réponse attendue : 13 et 14 élèves dans les demigroupes

Les types de nombre Un type, c'est le choix d'un codage Presque tous les langages de programmation prévoient au moins un type nombre à virgule (flottant) et un type entier. On crée souvent plus de types pour permettre de consommer moins de temps et d'espace, à condition que le programmeur choisisse le bon type.

Exemple du C Entiers courts Entiers longs Entiers courts non signés Entiers longs non signés ( et aussi : Caractères Nombres à virgule simple précision Nombre à virgule double précision )

Les entiers non signés C'est ce qui se rapproche le plus de ce qu'on a vu sur la description d'une zone mémoire (binaire, hexadécimal ou décimal). Seule différence : on travaille en taille fixe : entiers courts : (en général) sur 2 octets entiers longs : (en général) sur 4 octets Il y a un plus grand entier 1111111 11. Quand on calcule 111 1 + 1, le processeur renvoie 0

Entiers non signés courts 15 14 13 12 11 1O 9 8 7 6 5 4 3 2 1 0 rang (ou n de bit) 1 1 1 1 1 11 1 1 1 1 1 1 11 1 Le plus petit entier non signé court : (0000000000000000) b = 0 Le plus grand entier non signé court : (1111111111111111) b =1+2+4+ +2 15 = 2 16-1 = 65535 Conviennent pour de petits calculs

Entiers non signés longs 31 30 29 27 2625 24 23 22 2120 19 18 17 16 15 14 13 12 11 1O 9 8 7 6 5 4 3 2 1 0 rang (ou n de bit) 1 1 1 1 1 11 1 1 1 1 1 1 11 1 1 1 1 1 1 11 1 1 1 1 1 1 11 1 Le plus petit entier non signé long : (0000000000000000 0000000000000000) b = 0 Le plus grand entier non signé long : (1111111111111111 1111111111111111) b = 1+2+4+ +2 31 = 2 32-1 = 4 294 967 295 Calculs plus importants, avec 10 chiffres exacts

Les "grands" nombres : s'y retrouver Une remarque essentielle : 2 10 = 1024 1000 = 10 3 1024 = 1 kilo = (10000000000) b 10 zéros Même approximation pour les puissances de 1024 : 2 20 = 1024 * 1024 1000 * 1000 = 10 6 2 20 = 1 méga = (100..000) b 20 zéros

2 30 = 1024 * 1024 * 1024 1000 * 1000 * 1000 = 10 9 2 30 = 1 Giga = (100..000) b 30 zéros 2 40 = 1 Téra = (100..000) b 40 zéros Avec cette règle, on calcule pour le plus grand octet non signé sur 4 octets : 2 32 = 2 2 * 2 30 = 4 Giga 4 000 000 000 (valeur exacte 4 294 967 296) Se Se rappeler :: 2 a a * 2 b b = 2 a+b a+b

Utiliser l'hexadécimal Remarque 1 : 100 h = 256 d, donc 1 kilo = 1024 d = 400 h (4 fois 256) 1 mega = 1 kilo * 1 kilo = 10 00 00 h (car 4*4=10 h ) = 100 000 h 1 giga = 1 kilo * 1 mega = 400 00 000 h =40 000 000 h Remarque 2 : on peut écrire le code d'un entier en hexadécimal. Par exemple, pour 32 bits il faut 8 chiffres hexa.

Comme F h représente 1111 b, le plus grand nombre sur 32 bits s'écrit FFFF FFFF h 1 méga s'écrit 0010 0000 h

Opérations en binaire Comment fait-on une addition? En décimal, on écrit 1 + 1 = 2 En binaire : 1 b + 1 b = 10 b L'algorithme d'addition en colonne avec report de la retenue reste valide : 10101 +11101

1 1 1 1 1 0 1 0 1 + 1 1 1 0 1 1 0 0 1 0

Entiers signés courts On utilise un code sur deux octets, mais on veut représenter des nombres positifs ou négatifs Puisqu'on a 16 bits, on a 2 16 = 65536 codes (= représentations) différents. On choisit le bit de rang 15 pour coder le signe une moitié des codes pour les nombres 0, le reste pour les <0

15 14 13 12 11 1O 9 8 7 6 5 4 3 2 1 0 rang (ou n de bit) x x x x x xx x x x x x x xx x signe valeur Positifs : bit 15 à 0, on lit la valeur comme d'habitude même résultat que si c'était un non signé Négatifs : bit 15 à 1, on décide que le même algorithme d'addition que pour les non signés doit rester utilisable (parce que le processeur est plus simple à faire)

On a vu que sur 16 bits, le processeur calcule 1111 1111 1111 1111 + 1 = 0 1111 1111 1111 1111 b est le code de -1 De même 1111 1111 0101 1010 + 0000 0000 1010 0110 = 0000 0000 0000 0000 puisque 0000 0000 1010 0110 b code 166, 1111 1111 0101 1010 b code -166

Décoder un entier signé négatif (1) Deux techniques possibles (qui donnent le même résultat ) Décoder avec le code des non signés, puis soustraire 65536 (2 16, parce qu'on est sur 16 bits) En non signé, 1111 1111 0101 1010 b = 2 15 +2 14 +2 13 +2 12 +2 11 +2 10 +2 9 +2 8 +2 6 +2 4 +2 3 +2 1 =65370 puis 65370-65536 = - 166

Décoder un entier signé négatif (2) Calculer l'entier signé opposé par la technique du complément à deux, puis décoder l'opposé Complément à deux : 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 Le bit inverse Le premier 1 Le même bit

Remarque 1 : si a est le complément à 2 de b, alors b est le complément à deux de a. Remarque 2 : le complément à deux dépend de la taille d'entiers avec laquelle on travaille. Complément à deux de 1101 0100 : sur 1 octet : 0010 1100 (positif) sur 2 octets : 1111 1111 0010 1100 (négatif)

Entiers signés longs On a 2 32 = 4 Giga = 4 294 967 296 codes ( = représentations) différents On code le signe en utilisant le bit (de rang) 31 On représente les nombres de -2 147 483 648 à 2 147 483 647 Les algorithmes de décodage sont identiques à ceux vus pour les signés courts.

Nombres signés en hexadécimal En signé, un nombre est négatif si le chiffre binaire de gauche est 1, donc si le chiffre hexadécimal de gauche est 8 4FFF AG32 h est positif (4 h = 0100 b ) A00B 56F4 h est négatif (A h = 1010 h )

Complément à deux Pour le complément à deux, il faut que le total des deux nombres soit 0. Ex 6 D 4 F 8 9 2 B 0 7 C 4 0 3. total de colonne = 15 d =F h Le premier chiffre non nul 3 C 0 2. total = 16 d =10 h 1. On copie les zéros