490 likes | 664 Views
Représentation de nombres entiers et à virgule. A05 T.Camier. I. Bienvenu dans un monde binaire. Carte perforée d’un métier à tisser. 1. Les cartes perforées. http:// www.ina.fr/video/CAF97059686 http :// www.youtube.com/watch?v=MDQHE0W-qHs.
E N D
Représentation de nombres entiers et à virgule A05 T.Camier
Carte perforée d’un métier à tisser 1. Les cartes perforées • http://www.ina.fr/video/CAF97059686 • http://www.youtube.com/watch?v=MDQHE0W-qHs BILAN : chaque case ne peut avoir que 2 états : non coché ou coché (TROU). ATTENTION : la technique est binaire (Plein ou Trou), mais l’info n’est pas encore stockée de façon binaire mais de façon décimale. Exemple : 13;666;69
Que de place perdue! • Un mélange binaire-décimal peu judicieux: • Exemple on souhaite stocker un âge humain. Or il faut réserver 3 chiffres dans cette carte (3 colonnes), soit 3*10=30 infos binaires réservées, 3 étant obligatoirement utilisées, les 27 autres sont de la place perdue ! • Un stockage 100% binaire sur 7 bits (dont on utilise 1 à 7 bits) permet de stocker des âges jusque 127 ans. • Si on souhaite plus de marge, avec un bit de plus, on peut stocker des âges jusque 255 ans ! • Ce problème sera revu avec la notion de compression de données
Bilan • Mécaniquement, il est aisé de stocker une info binaire. • Et électriquement ?
2. Le transistor Au final, on a une info binaire pour Vce : Rien (0) ou quelque chose (1) Il existe des transistors dits à grille flottante : cette grille a pour particularité physique de conserver une charge d'électrons durant de très longues périodes (les fabricants ont estimé cette durée à cent ans !) http://www.01net.com/editorial/294823/comment-ca-marche-la-memoire-flash/
3. Les disques optiques Le retour de la carte perforée à lecture optique ! La question au prof de physique : pourquoi être passé du laser rouge au blu-ray ? Et ensuite, que faire d’encore mieux ?
4. Bilan Quantité élémentaire d’information : le bit (BInarydigiT). Deux valeurs : 0 ou 1 Tout peux se ramener à un codage binaire. Selon le contexte, peuvent correspondre à : • nombres 0 ou 1 (numérique), • faux ou vrai (logique), • ouvert ou fermé (interrupteur) • nord ou sud (magnétique), • noir ou blanc (optique), • absence ou présence de trou (carte perforée), etc.
5. ExerciceS • 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 huit circuits mémoire un bit. (un ordinateur 8 bits) • On veut représenter chacune des sept couleurs de l’arc-en-ciel par un mot, les sept mots devant être distincts et de même longueur. Quelle est la longueur minimale de ces mots ?
1) La numération binaire • Voir DM A04 III.1 et III.4.e • Il faut connaître le tableau suivant (pour un octet, c’est-à-dire 8 bits) • Exercice : convertir en décimal les octets (donnés sous forme binaire) suivants • 10101010 • 01010101 • Quelle valeur décimale maximale peut-on stocker sur 1 octet ?
2) Conversion décimal vers binaire • Voir DM A04 III.4.e • Exercice • En utilisant les 2 techniques, coder votre numéro de téléphone sur 5 octets (1 octet par doublette, par exemple « 06 ») • Était-il indispensable d’utiliser un octet par doublette ?
3) Conversion binaire vers décimal • Voir DM A04 III.1. et III.4.a. • Exemple : 11110010000 est une date fondamentale pour l’informatique (Voir exposé Turing) Quelle est cette date en décimal ?
1) On peut faire… des calculs • Faire l’addition binaire de 0111 0110 et 1010 1101 0111 0110 + 1010 1101 ------------------ = Convertir en décimal chacun des membres et votre résultat. Vérifier que la somme est correcte.
2) On peut faire… de La logique • Sur une alarme, j’ai : • Un bouton off/on (0 ou 1) • Un détecteur de présence (0 quand personne et 1 quand détection) • Une sirène. Quand elle reçoit 0, elle ne fait rien. Quand elle reçoit 1, elle hurle. • Identifier les entrées et sorties vu du point de vue de ma centrale d’alarme • Quelle logique doit adopter mon alarme pour fonctionner correctement ?
Les tables de vérité ET OU NON
Réalisation concrète • exemple de circuit intégré 7400 contenant 4 portes NON-ET (NAND). Les deux autres broches servent à l'alimentation 0V / 5V.
1) La base 16 ? Une solution • Pourquoi ? Parce que 161 = 24. Donc on va réussir à afficher en base 16 un quarté (c’est-à-dire 4 octets). • On appelle la base 16, la base hexadécimale
2) Conversion hexadécimal vers décimal • Voir DM A04 III.2 et III.4.b • Il faut connaître le tableau suivant
Exemples • Exercices : Convertir en décimal • 23base 16 • A2base 16 • DEbase 16 • Quelle valeur décimale maximale peut-on donner en utilisant 2 caractères héxadécimaux ?
3) Conversion hexadécimal vers binaire • Voir DM A04 III.4.c • Chaque « chiffre » du nombre hexadécimal est converti en quarté (4 bits) • Voir tableau dans les pages précédentes • Exemples : • 5base 16 = binaire • Bbase16 = binaire • 5Bbase 16 = binaire • ACbase16 = binaire
4) Conversion binaire vers hexadécimal • Voir DM A04 III.4.d • Il faut découper le binaire en quarté. Ensuite, il faut convertir chaque quarté en un « chiffre » héxédécimal. • Voir tableau dans les pages précédentes • Exemples : • 0110binaire = base 16 • 1010binaire= base 16 • 0110 1010binaire= base 16 • 1111 1111binaire= base 16
5) Application codage des couleurs dans une page web • La synthèse additive des couleurs http://www.ostralo.net/3_animations/swf/synthese_couleurs.swf • A savoir (physique 1S) • A partir de 3 couleurs (RGB) on peut synthétiser n’importe quelle couleur • Chaque source primaire de couleur est utilisée de 0% à 100% • 0% sera codé 0000 0000binairecad 00hexadécimal • 100% sera codé 1111 1111binairecadFFhexadécimal
Pour coder une couleur dans une page web, on utilise le codage hexadécimal du type : #rrggbb • (le # précise que la donnée qui suit est en hexadécimal) • Exemples : • je veux générer une couleur 75% rouge et 20% bleu (voir rendu sur animation). Quel code mettre dans la page web ? • je veux générer une couleur 25% rouge et 100% vert (voir rendu sur animation). Quel code mettre dans la page web ?
1) Quelle méthode mettre en place ? • On a vu précédemment comment représenter des entiers naturel en binaire. • Les capacités : • sur 8 bits, combien peut-on représenter de nombre différents ? • Idem sur 16 bits • Idem sur 32 bits • Une idée pour les entiers relatifs ? (réflexion sur 16 bits)
Idée : dédier un bit au signe • Positif : 0 • Négatif : 1 • Combien de valeur de valeur peut-on représenter ? • Mini : -111 1111 1111 1111, c’est-à-dire en décimal ? • Maxi : +111 1111 1111 1111, c’est-à-dire en décimal ? • Quel serait l’inconvénient majeur (et rédhibitoire) de ce système.
2) La méthode retenue : notation en complément à deux • De 0 à 32 767, pas de problème, on stocke les entiers naturels • De 32 768 à 65 535, on va stocker les nombres négatifs
Donner les représentations binaires sur 8 bits de : • 0 • 128 • - 128 • 127 • - 127 • Mêmes questions, mais sur 16 bits • Pour d’autres, exemples, voir Spé ISN en TS de Dowek au CDI
Dowek p.108 s : signe m : mantisse n : exposant
1100010001101001001111000011100000000000000000000000000000000000 • Quelle valeur en décimal ?
1100010001101001001111000011100000000000000000000000000000000000 • Bit de signe = 1, donc nombre négatif
1100010001101001001111000011100000000000000000000000000000000000 • Exposant : 100 0100 0110 • On est sur n = … bits • Soit en décimal : p = ?? • Donc au final, on peut trouver l’entier relatif : relatif = p - 1023 • Ici, exposant =
11000100011010010011110000111000000000000000000000000000000000001100010001101001001111000011100000000000000000000000000000000000 • Mantisse : 1001001111000011100000000000000000000000000000000000 • m = 1 + + 0 + 0 + + 0 + 0 + + + + + 0 + 0 + 0 + 0 + + + • m = (217 + 216+ 0 + 0 + 213 + 0 + 0 + 210 + 29 + 28 + 27 + 0 + 0 + 0 + 0 + 22 + 21 + 1 ) / 217 • m = 206 727 / 131 072 (qui est bien compris entre 1 et strictement 2) • Remarque : 1 est un bit implicite
Bilan • On a donc stocké : Qui permet de retenir la valeur - 3,72406 . 10 21 ! Bienvenue dans le monde la norme IEEE 754 de 1985
VII. Conséquence sur les déclarations de variables • Quand on veut stocker une valeur, par exemple votre note en ISN au bac, il faut réserver un nombre d’octet donné et spécifier au logiciel le type
Exemple : variable sur un serveur sql (pour web) • Source : http://docs.postgresql.fr/7.4/datatype.html#DATATYPE-NUMERIC
Il faut bien entendu préciser le type : un « integer » et un « real » réservent tous deux 4 octets. • Si on voit 4 octets, on ne peut pas savoir quel type de données il y a. • Bref, il faut se méfier du typage • Exemple : cahier texte qui utilise un variable n pour chaque devoir donné. • Si n est un smallint, dès que quelqu’un donnera le devoir numéro 32 768, le logiciel plantera ! • Solution : Prendre un integer (suffisant ? : à réfléchir) ou un bigserial (mais qui occupera 8 octet sur le serveur… et qui coûtera donc plus !) • Exemple de bug le 28 mars 2012 http://www.etab.ac-caen.fr/bsauveur/cahier_de_texte/correctifs.html