Reprsentation numrique de linformation numrique et textuelle Formation

  • Slides: 42
Download presentation
Représentation numérique de l’information numérique et textuelle Formation ISN 2017 -2018 David Langlois david.

Représentation numérique de l’information numérique et textuelle Formation ISN 2017 -2018 David Langlois david. langlois@univ-lorraine. fr

Objectifs du cours Montrer comment est représentée/manipulée l’information dans un ordinateur Etude du codage

Objectifs du cours Montrer comment est représentée/manipulée l’information dans un ordinateur Etude du codage binaire pour : Les valeurs numériques Les caractères Autres natures de données Les fichiers sons : voir version étendue de ce support Les images ? Voir un cours à suivre 2

Information Un ordinateur manipule des informations de natures diverses Valeurs numériques : naturels, réels,

Information Un ordinateur manipule des informations de natures diverses Valeurs numériques : naturels, réels, irrationnels (? ), fractions, complexes. . . Données textuelles : texte brut, texte enrichi, texte avec format Images : dessin libre, figures géométriques, photos Sons : bruit, musique, parole Vidéos : suite d’images + bande sonore Ces informations sont stockées sous des formats très divers Ex : image BMP, DXF, EPS , GIF, Jpeg, Photo CD, PCX, PICT, PS, TIFF, WPG Ces informations sont : Stockées Manipulées Calculées Quels codages de ces informations ? 3

Ordinateur, c’est quoi ? Une machine manipulant de l’information, seul (calcul de trajectoire de

Ordinateur, c’est quoi ? Une machine manipulant de l’information, seul (calcul de trajectoire de météorite), ou en interaction avec l’utilisateur Quand je dessine à l’ordinateur, l’ordinateur manipule-t- il un dessin ? Même réponse que pour la question « quand je joue au tennis contre un mur, le mur joue-t-il au tennis du fait qu’il me renvoie la balle ? » Une machine permettant d’exécuter des programmes Une machine capable de lire des registres mémoire, 4 d’opérer des calculs sur ces registres et de modifier les valeurs des registres Un assemblage de plusieurs millions de transistors

Ordinateur, c’est quoi ? Utilisateur : niveau numérique et symbolique Ordinateur : niveau purement

Ordinateur, c’est quoi ? Utilisateur : niveau numérique et symbolique Ordinateur : niveau purement électrique Comment est construit le lien entre les deux niveaux ? 5

ATTENTION : vision schématique Transistor Un composant électronique dôté de : Deux entrées e

ATTENTION : vision schématique Transistor Un composant électronique dôté de : Deux entrées e 1 et e 2 Une sortie s e 1 TRANSISTO R s e 2 est l’alimentation du transistor Deux états : Pas de courant en e 1 + courant en e 2 courant en s Courant en e 1 + courant en e 2 pas de courant en s Quel intérêt ? Présence/absence de tension : facile à mesurer Mesure robuste aux interférences Simule une porte logique NON calcul logique 6 e 2= 1 e 1 NON s

Logique et binaire : une correspondance bijective Logique : deux valeurs VRAI/FAUX Binaire :

Logique et binaire : une correspondance bijective Logique : deux valeurs VRAI/FAUX Binaire : deux valeurs 0/1 Possibilité de représenter les calculs numériques binaires à l’aide des portes logiques Binaire = représentation efficace de l’information de toute nature. 7

Codage binaire d’un nombre Codage en base 10 : utilisation de 0, 1, 2,

Codage binaire d’un nombre Codage en base 10 : utilisation de 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 pour coder les valeurs numériques Codage en base 2 : utilisation de 0, 1 pour coder les valeurs numériques Tout entier en base n peut être codé en binaire. Exemple 510 = 1012 car 5 = 1*22+0*21+1*20 En général X 10 = bnbn-1 bn-2. . b 2 b 1 b 0 si et seulement si : 8

Fabriquer un NON logique (rappel) NON e 2=1 e 1=A 9 A NON A

Fabriquer un NON logique (rappel) NON e 2=1 e 1=A 9 A NON A VRAI FAUX VRAI NON A

Fabriquer un ET logique = Brancher plusieurs transistors alimentation = 1 e 1 =

Fabriquer un ET logique = Brancher plusieurs transistors alimentation = 1 e 1 = A e 1 = B NON NON A NON B NON A OU NON B NON (NON A OU NON B ) = A ET B ET 10 A B A ET B VRAI FAUX VRAI FAUX Distribution du NON

Autres opérations logiques NON et ET suffisants pour : A OU B = NON

Autres opérations logiques NON et ET suffisants pour : A OU B = NON ((NON A) ET (NON B)) A NON-OU B = NON (A OU B) A OU-EXCLUSIF B = (A ET NON B) OU (NON A ET B) OU OU-EXCLUSIF NON-OU A B A OU B A NOR B A XOR B VRAI VRAI FAUX VRAI FAUX VRAI FAUX VRAI FAUX FAUX VRAI FAUX 11

Le calcul binaire et le calcul logique 1 bit = 0 ou 1 Opération

Le calcul binaire et le calcul logique 1 bit = 0 ou 1 Opération sur les bits : complémentaire, somme, multiplication Convention 1 pour VRAI 0 pour FAUX 12

Et les supports de stockage ? Disque dur Surface magnétique constituée de très petits

Et les supports de stockage ? Disque dur Surface magnétique constituée de très petits éléments Deux valeurs +/ Têtes de lecture/écriture génèrent un champ magnétique capable de changer la polarité code binaire Mémoire flash basée sur des semi-conducteurs à deux états Passage du courant passage d’un état à l’autre code binaire 13

Et les supports de stockage ? CD-ROM Lecture laser : la surface réfléchissante renvoie

Et les supports de stockage ? CD-ROM Lecture laser : la surface réfléchissante renvoie le laser Vierge = surface opaque = laser non renvoyé Ecriture = percer un trou minuscule dans la surface opaque = la lumière laser est renvoyée Deux états : lumière renvoyée ou non codage binaire CD-RW : couche d’éléments pouvant devenir transparents/opaques suivant la chaleur imposée binaire Conclusion : les supports de stockage utilisent le binaire 14

Mesure de la taille des données 1 octet = 8 bits 1 Ko =

Mesure de la taille des données 1 octet = 8 bits 1 Ko = 1024 octets (~1000) 1 Mo = 1024 Ko (~1000) 1 Go = 1024 Mo (~1000) 1 To = 1024 Go (~1000) 15

Conclusion L’ordinateur gère tout sous forme binaire Les supports de stockage aussi Le binaire

Conclusion L’ordinateur gère tout sous forme binaire Les supports de stockage aussi Le binaire en plus d’être adapté à la structure même d’un ordinateur a d’autres avantages Souplesse pour coder les éléments du monde Opérations courantes (multiplication par 2) simplicité + efficacité en machine Donc tout doit être représenté sous cette forme Etudions les codages en binaire de l’information sous toutes ses formes 16

Coder les nombres en binaire

Coder les nombres en binaire

Les entiers (rappel) Codage en base 10 : utilisation de 0, 1, 2, 3,

Les entiers (rappel) Codage en base 10 : utilisation de 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 pour coder les valeurs numériques Codage en base 2 : utilisation de 0, 1 pour coder les valeurs numériques Tout entier en base n peut être codé en binaire. Exemple 510 = 1012 car 5 = 1*22+0*21+1*20 En général X 10 = bnbn-1 bn-2. . b 2 b 1 b 0 si et seulement si : 18

Opérations binaires Complémentaire à 2 sur n bits Si A est un nombre binaire,

Opérations binaires Complémentaire à 2 sur n bits Si A est un nombre binaire, alors le complémentaire c(A) est tel que : c(A) = 2 n-A Remarque : c(A) = (2 n-1)-A+1 2 n-1 en base 2 = que des 1 Donc : (2 n-1)-A : remplacer dans A les 1 par des 0 et les 0 par des 1 c(A) : puis ajouter 1 Calcul facile ! 19

Complémentaire : exemple Si A = 10310, C(A) = 25610 -10310 = 15310 Retrouvons

Complémentaire : exemple Si A = 10310, C(A) = 25610 -10310 = 15310 Retrouvons ce résultat avec la méthode de la diapositive précédente A : code 011001112 (application de la méthode classique) 28 -1 -A : code 100110002 (on remplace les 1 par 0 et 0 par 1) 28 -1 -A+1 : code 10012 (on ajoute 1) Donc C(A) : code 10012 Finalement : 10012 = 128+16+8+1 = 15310 On retombe sur le résultat ! Mais bon on n’est pas surpris puisqu’on a prouvé que ce serait le cas dans la diapositive précédente. 20

Opérations binaires Somme Multiplication Base 2 R 1 Base 10 1 1 1 0

Opérations binaires Somme Multiplication Base 2 R 1 Base 10 1 1 1 0 1 5 1 1 1 7 1 0 0 12 Base 2 R 1 21 Base 10 1 5 1 1 1 7 1 0 1 1 0 0 0 1 1 Multiplier par 2 = décalage de tous les bits à gauche, dernier bit à 0 Diviser par 2 = décalage de tous les bits à droite, perte du bit de poids faible 35

Codage Chaque valeur est codée sur un nombre préfixé de bits Exemples : 8,

Codage Chaque valeur est codée sur un nombre préfixé de bits Exemples : 8, 16, 32, 64 Notez les puissances de 2, qui simplifient ensuite les calculs Note : 8 bits = 1 octet 1 bit = 2 valeurs possibles 2 bits = 4 valeurs possibles . . . n bits = 2 n valeurs possibles Un entier sur 8 bits peut coder 256 valeurs différentes constante importante : un ordinateur a toujours des limites finies. 22

Codage 2 n valeurs, d’accord, mais lesquelles ? Tout dépend du codage choisi !!

Codage 2 n valeurs, d’accord, mais lesquelles ? Tout dépend du codage choisi !! C’EST UN CHOIX TOUT LE MONDE EST D’ACCORD SUR CE CHOIX NORMALISATION 23

Codage des entiers naturels (1/2) Sur n bits Valeurs de 0 à 2 n-1

Codage des entiers naturels (1/2) Sur n bits Valeurs de 0 à 2 n-1 Exemple sur 8 bits 00002 = 010 000000012 = 110 000000102 = 210 . . . 111111102 = 25410 11112 = 25510 Attention aux dépassements ! 11112+000000012 = ? ? ? Réponse 000000002 -000000012 = ? ? ? Réponse 11112 24

Codage des entiers naturels (2/2) Deux représentations possibles (selon les machines, les programmes) Bit

Codage des entiers naturels (2/2) Deux représentations possibles (selon les machines, les programmes) Bit de poids faible à droite, bit de poids fort à gauche Bit de poids faible à gauche, bit de poids fort à droite Il faut le savoir et gérer en conséquence 25

Encodage/décodage des entiers Quelle méthode appliquer à la main ? Pour encoder de la

Encodage/décodage des entiers Quelle méthode appliquer à la main ? Pour encoder de la base 10 à la base 2 ? Pour décoder de la base 2 à la base 10 ? Tester sur des exemples : 210 = 102 310 = 112 1510 = 11112 26

De la base 2 vers la base 10 x 2 = 10110111 x 10

De la base 2 vers la base 10 x 2 = 10110111 x 10 ? Appliquer la formule : 1*27+0*26+1*25+1*24+0*23+1*22+1*21+1*20 1*128+0*64+1*32+1*16+0*8+1*4+1*2+1*1 128+32+16+4+2+1 183 Mais de tête, difficile de calculer toutes ces puissances de 2 Il vaut mieux énumérer les puissances de 2 en partant de 1 (20) puis en multipliant par 2 à chaque fois On lit alors les bits de droite à gauche 27

De la base 10 vers la base 2 (1/2) x 10 = 183 x

De la base 10 vers la base 2 (1/2) x 10 = 183 x 2 ? On peut travailler sur la formule : Donc, on a le bit de poids faible, ensuite, il faut décoder le reste de la division par 2 sans ce bit 28

De la base 10 vers la base 2 (2/2) Exemple avec 183 bit=1, reste

De la base 10 vers la base 2 (2/2) Exemple avec 183 bit=1, reste à décoder 183/2 = 91 bit=1, reste à décoder 91/2 = 45 bit=1, reste à décoder 45/2 = 22 bit=0, reste à décoder 22/2 = 11 bit=1, reste à décoder 11/2 = 5 bit=1, reste à décoder 5/2 = 2 bit=0, reste à décoder 2/2 = 1 bit=1, reste à décoder 1/2 = 0 Résultat : 10110111 29

Exercices Coder dans l’autre base (sur 8 bits) 4910 12610 110100102 010110112 Les autres

Exercices Coder dans l’autre base (sur 8 bits) 4910 12610 110100102 010110112 Les autres bases (souvent utilisées en informatique par les humains) Base 8 : code avec 0, 1, 2, 3, 4, 5, 6, 7 Base 16 : code avec 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F Coder 267110 en base 16. Cet exercice est proposée dans la feuille d’exercices, et donc corrigé dans la feuille de correction. 30

Codage des entiers relatifs (sol 1) Sur n bits 1 bit pour le signe,

Codage des entiers relatifs (sol 1) Sur n bits 1 bit pour le signe, n-1 bits pour la valeur (+) Simple (-) Dans les opérations, le bit de signe doit être géré comme un cas particulier (-) existence de 2 0 (non conceptuellement satisfaisant), deux cas à gérer Nombre de valeurs pouvant être codées : 2 n-1 (et pas 2 n) 31

Codage des entiers relatifs (sol 2) Sur n bits Complément à 2 Si x

Codage des entiers relatifs (sol 2) Sur n bits Complément à 2 Si x est positif, représentation habituelle, Si x est négatif, on code 2 n-|x| (le bit de poids fort est 1) Exemple sur 8 bits 000001012 = 510 100001012 = 13310=256 -12310=2810 -12310 => codage de -12310 (+) codage de 2 n valeurs (un seul 0 0000) (+) la somme des relatifs ne subit pas d’exceptions 32

Codage des entiers relatifs (sol 2) (-) codage moins évident que sol 1 (+)

Codage des entiers relatifs (sol 2) (-) codage moins évident que sol 1 (+) la somme des relatifs ne subit pas d’exception Base 2 sur 8 bits 1 1 1 0 0 0 1 0 0 4 1 1 1 0 1 253 = 28 -|x| x = -3 0 0 0 1 1 0 33 Base 10

Codage des entiers relatifs (sol 3) En excédent Représentation d’un intervalle [-i, +j] par

Codage des entiers relatifs (sol 3) En excédent Représentation d’un intervalle [-i, +j] par les valeurs décalées de i Exemple : Intervalle [-127, 128] sur 8 bits [-127, 128] contient bien 28=256 valeurs Décalage de 127 Codage : -127 codé par -126 codé par . . . -1 codé par 0 codé par 1 codé par . . 127 codé par 128 codé par 34 00000001. . . 01111110 01111111 10000000. . . 11111110 1111

Exercices/solutions Coder -8910 sur 8 bits en : Bit de signe Complément à 2

Exercices/solutions Coder -8910 sur 8 bits en : Bit de signe Complément à 2 Excédent à 127 Cet exercice fait partie de la feuille d’exercices, et est donc corrigé dans la feuille de correction 35

Codage binaire des réels (1/3) Les réels sont considérés en notation scientifique x =

Codage binaire des réels (1/3) Les réels sont considérés en notation scientifique x = +/- 0, a. 10+/- b x peut être réprésenté par 2 entiers a et b (pour avoir 0, . . . il suffit d’adapter la valeur de b) En binaire : x = +/- 1, a. 2+/- b le 1 à gauche est toujours là par convention (voir diapo suivante) On ne représente pas 0, 101. 2 -3 mais 1, 01. 2 -4 a et b sont en binaire Codage de la partie fractionnaire en puissances négatives de 2 Exemple : 1, 01011. 22 = 101, 011 = 1*22+0*21+1*20+0*2 -1+1*2 -2+1*2 -3 1, 01011. 22 = 4+1+0, 25+0, 125 = 5, 37510 36

Codage binaire des réels (2/3) Norme IEEE 754 Un réel est représenté sur 32

Codage binaire des réels (2/3) Norme IEEE 754 Un réel est représenté sur 32 bits : 1 bit pour le signe 8 bits en excédent à 127 pour l’exposant La mantisse est représentée sous la forme 1, a. 23 bits pour a, le 1 à gauche n’est pas représenté Exemple pour 5, 375 510 = 1012 Soit 1, 01. . . *22 a commence par 01 b = 210; on représente 2+12710 = 100000012 Reste 21 (23 moins les 2 de 01 à droite de la virgule dans 1, 01) bits pour représenter 0, 375 Principe : si x = 0, b 1 b 2. . . alors 2 x = b 1 + 0, b 2. . . 2*0, 375 = 0, 75 0 2*0, 75 = 1, 5 1 2*0, 5 = 1 1 5, 37510 = 1, 010112 Sur 32 bits : 010000001(1)01011000000000 (le 1 est sous-entendu) 01000000101011000000000 37

Codage binaire des réels (3/3) Attention : seulement 232 valeurs possibles ! Les valeurs

Codage binaire des réels (3/3) Attention : seulement 232 valeurs possibles ! Les valeurs spéciales Le zéro est représenté par 32 bits à 0. Infini : exposant rempli de 1 et mantisse à 0 Code erreur (exemple résultat d’une division par 0) : exposant rempli de 1 et mantisse différente de 0 38

Coder du texte en binaire 39

Coder du texte en binaire 39

Codage binaire des caractères Problème : coder ‘a’, ’b’, ‘c’, ‘A’, ‘B’, ‘? ’,

Codage binaire des caractères Problème : coder ‘a’, ’b’, ‘c’, ‘A’, ‘B’, ‘? ’, ‘€’, ‘©’, ‘μ’, ‘ø’, caractères cyrilliques, asiatiques, arabes. . . . Plusieurs codages : voir la liste dans un traitement de texte ASCII : (American Standard Code for Information Interchange) 7 bits = 128 valeurs, le 8 ième bit utilisé pour vérification (lors des échanges de données) Représentation de 128 caractères Pas assez pour toutes langues ASCII étendu sur 8 bits (code ISO Latin-1) 8 bits = 256 caractères différents, assez pour langues latines et européennes Compatibilité avec le code ASCII (partage des 128 premiers caractères) UNICODE sur 16 bits = 65536 caractères différents, assez pour tous les caractères de toutes langues Compatible avec le code ASCII. Problème : consommation mémoire + gestion un peu compliquée des caractères sur 2 octets (voir en TD). 40

UTF-8 (1/2) Coder tous les caractères de la norme unicode Un octet ne suffit

UTF-8 (1/2) Coder tous les caractères de la norme unicode Un octet ne suffit plus Coder sur n octets gourmand en taille codage sur un nombre variable d’octets Codage 41 Représentation binaire UTF-8 Signification 0 xxxxxxx U+0000 à U+007 F (ASCII) 110 xxxxxx U+0080 à U+07 FF 1110 xxxxxx U+0800 à U+FFFF 11110 xxxxxx 10 xxxxxx U+10000 à U+10 FFFF

UTF-8 (2/2) (+) tous les caractères sont codables (+) : compatibilité totale avec l’ASCII

UTF-8 (2/2) (+) tous les caractères sont codables (+) : compatibilité totale avec l’ASCII sur 7 bits (-) taille variable décodage plus complexe D’autres avantages/défauts plus techniques Voir http: //fr. wikipedia. org/wiki/UTF-8 42