• Aucun résultat trouvé

Représentation numérique de l’information numérique et textuelle

N/A
N/A
Protected

Academic year: 2022

Partager "Représentation numérique de l’information numérique et textuelle"

Copied!
42
0
0

Texte intégral

(1)

Formation ISN 2017-2018 David Langlois

david.langlois@univ-lorraine. fr

Représentation numérique de l’information numérique et

textuelle

(2)

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

(3)

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 ?

(4)

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, d’opérer des calculs sur ces registres et de modifier les valeurs des registres

Un assemblage de plusieurs millions de transistors

(5)

Ordinateur, c’est quoi ?

Utilisateur : niveau numérique et symbolique

Ordinateur : niveau purement électrique

Comment est construit le lien entre les

deux niveaux ?

(6)

Transistor

Un composant électronique dôté de :

Deux entrées e1 et e2

Une sortie s

e2 est l’alimentation du transistor

Deux états :

Pas de courant en e1 + courant en e2  courant en s

Courant en e1 + courant en e2  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

e2 NON

=1e s

TRANSIST OR

e2 e 1

s ATTENTION

: vision schématiqu

e

6

(7)

Logique et 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.

(8)

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

X10 = bnbn-1bn-2....b2b1b0 si et seulement si :

2

0 n i

i

b

i

X   

(9)

Fabriquer un NON logique (rappel)

e2= NON 1e1=

A

NON A NON

A NON

A

VRAI FAUX FAUX VRAI

(10)

NON A

Fabriquer un ET logique

= Brancher plusieurs transistors

e1 = A NON

ET

A B A ET

B VRAI VRAI VRAI VRAI FAUX FAUX FAUX VRAI FAUX FAUX FAUX FAUX

e1 = B NON NON

NON B NON A OU NON B

NON (NON A OU NON B )

= A ET B

Distribution du NON

alimentation = 1

(11)

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

A B A OU

B VRAI VRAI VRAI VRAI FAUX VRAI FAUX VRAI VRAI FAUX FAUX FAUX

NON-OU

A B A NOR

B

VRAI VRAI FAUX VRAI FAUX FAUX FAUX VRAI FAUX FAUX FAUX VRAI

OU-EXCLUSIF

A B A XOR

B

VRAI VRAI FAUX VRAI FAUX VRAI FAUX VRAI VRAI FAUX FAUX FAUX

(12)

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

(13)

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

(14)

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

(15)

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)

(16)

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

(17)

Coder les nombres en binaire

(18)

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

X10 = bnbn-1bn-2....b2b1b0 si et seulement si :

2

0 n i

i

b

i

X   

(19)

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) = 2n-A

Remarque :

c(A) = (2n-1)-A+1

2n-1 en base 2 = que des 1

Donc :

(2n-1)-A : remplacer dans A les 1 par des 0 et les 0 par des 1

c(A) : puis ajouter 1

Calcul facile !

(20)

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 100110012 (on ajoute 1)

Donc C(A) : code 100110012

Finalement : 100110012 = 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.

(21)

Opérations binaires

Somme

Base 2 Base

10

R  1 1

1 0 1 5

1 1 1 7

1 1 0 0 12

Multiplication

Base 2 Base 10

1 0 1 5

1 1 1 7

R 1 1

1 0 1

1 0 1

1 0 1

1 0 0 0 1 1 35

Multiplier par 2 = décalage de tous les bits à gauche, dernier bit à 0

(22)

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 = 2n valeurs possibles

Un entier sur 8 bits peut coder 256 valeurs différentes

 constante importante : un ordinateur a toujours des limites finies.

(23)

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

(24)

Codage des entiers naturels (1/2)

Sur n bits

Valeurs de 0 à 2

n

-1

Exemple sur 8 bits

000000002 = 010

000000012 = 110

000000102 = 210

...

111111102 = 25410

111111112 = 25510

Attention aux dépassements !

111111112+000000012 = ???

Réponse 000000002

000000002-000000012 = ???

Réponse 111111112

(25)

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

(26)

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 :

2

10

= 10

2

3

10

= 11

2

15

10

= 1111

2

(27)

De la base 2 vers la base 10

x2 = 10110111

x10 ?

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

(28)

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

2 2

2

2

6

0 1

0 7 1

0 1 7

0 1 7

0

2

2 j

j j

i

i i

i

i i

i

i

b

i

b b b b b b

X

  

  

  

(29)

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

2 2

2

2

6

0 1

0 7 1

0 1 7

0 1 7

0

2

2 j

j j

i

i i

i

i i

i

i

b

i

b b b b b b

X

  

  

  

(30)

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.

(31)

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

)

(32)

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 2n-|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 2n valeurs (un seul 0 00000000)

(+) la somme des relatifs ne subit pas d’exceptions

(33)

Codage des entiers relatifs (sol 2)

(-) codage moins évident que sol1

(+) la somme des relatifs ne subit pas d’exception

Base 2 sur 8 bits Base 10

1 1 1 1 1

0 0 0 0 0 1 0 0 4

1 1 1 1 1 1 0 1 253 = 28-|

x|  x = -3

0 0 0 0 0 0 0 1 1

(34)

Codage des entiers relatifs (sol3)

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 00000000

-126 codé par 00000001

... ...

-1 codé par 01111110

0 codé par 01111111

1 codé par 10000000

.... ...

127 codé par 11111110

128 codé par 11111111

(35)

Exercices/solutions

Coder -89

10

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

(36)

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

(37)

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,b1b2... alors 2x = b1 + 0,b2...

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)01011000000000000000000 (le 1 est sous-entendu)

01000000101011000000000000000000

(38)

Codage binaire des réels (3/3)

Attention : seulement 2

32

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

(39)

Coder du texte en binaire

(40)

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 8ième bit utilisé pour vérification (lors des échanges de données)

Représentation de 128 caractères

Pas assez pour toutes les 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

16 bits = 65536 caractères différents, assez pour tous les caractères de toutes les 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).

(41)

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

Représentation binaire

UTF-8 Signification

0xxxxxxx U+0000 à U+007F (ASCII)

110xxxxx 10xxxxxx U+0080 à U+07FF 1110xxxx 10xxxxxx

10xxxxxx U+0800 à U+FFFF 11110xxx 10xxxxxx

(42)

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

Références

Documents relatifs

(e) Quels sont les différents niveaux de codage pour la couleur d’une image. Pour chaque niveau, donner la taille mémoire pour coder

Ouvrir cette nouvelle image et compléter la deuxième ligne du tableau.. Ouvrir à nouveau

De nouveaux groupes d'animaux apparaissent lorsque les nouveaux caractères sont adaptés pour survivre au milieu de vie des êtres vivants ainsi ils évoluent.

[r]

Il est par contre possible de réaliser des conversions : on retiendra que la fonction str permet de convertir un objet en chaine de caractères et les fonctions float et int

*expert : c’est notre cœur de métier (3 étoiles), maîtrise : sans être notre spécialité, nous maitrisons ce service (2 étoiles), basique : nous répondons aux besoins les

[r]

Leçon 107 : Représentations et caractères d’un groupe fini sur un C–espace vectoriel.. La dimension de V est appelé le degré de