1. codage de l’informationgmanzonetto/~m1101/m1101-cours-01.pdf · tera-bit tb 1012 bits peta-bit...

30
Plan 1/30 1. Codage de l’information

Upload: others

Post on 03-Mar-2021

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Plan 1/30

1. Codage de l’information

Page 2: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Plan 2/30

1. Codage de l’information1.1 Le systeme binaire1.2 Changement de base1.3 Operations binaires1.4 Codage du texte

Page 3: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Representer l’information 3/30

I L’informatique est le traitement automatique de l’information.I automatique = realisable par une machineI information = donnees de l’utilisateur (des nombres, du son, des images, du

texte, . . . )

I Pour travailler sur des donnees l’ordinateur a besoin de les representer dansun langage qu’il comprend : le langage machine base sur le systeme binaire.

I On appelle codage le procede qui consiste a traduire les donnees enlangage machine et decodage le procede inverse.

Page 4: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Le bit 4/30

I Le bit est la plus petite unite de representation de l’information.I bit = contraction de binary digit (chiffre binaire)I Un bit a pour valeur 0 ou 1.I Dans certains cas (voir les operateurs logiques) on associe aussi :

I 0 a fauxI 1 a vrai

I Une suite de 8 bits est appelee un octet.Une suite de 4 bits est appelee un quartet.

I En informatique, on code les donnees avec des sequences de bits (ounombres binaires).

NotationI Pour preciser le systeme (binaire ou decimal) dans lequel est ecrit un

nombre on utilise un indice (2 ou 10).I Exemples :

I 10012 est un nombre binaireI 100110 est un nombre decimal

I Si l’indice n’est pas precise, le nombre est ecrit dans le systeme decimal.

Page 5: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Bits de poids fort/faible 5/30

I Dans une sequence de bits bn−1bn−2. . .b0, on appelle :I bit de poids faible, le bit le plus a droite (b0)I bit de poids fort, le bit le plus a gauche (bn−1)I bit de poids p, le bit bp

I Par exemple, dans la sequence 1011100102 :I Le bit de poids faible est 0.I Le bit de poids fort est 1.I Le bit de poids 3 est 0.

Page 6: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Unites de representation de l’information 6/30

Basees sur les bits

kilo-bit Kb 103 bitsmega-bit Mb 106 bitsgiga-bit Gb 109 bitstera-bit Tb 1012 bitspeta-bit Pb 1015 bitsexa-bit Eb 1018 bits

Basees sur les octets

kilo-octet Ko 103 octetsmega-octet Mo 106 octetsgiga-octet Go 109 octetstera-octet To 1012 octetspeta-octet Po 1015 octetsexa-octet Eo 1018 octets

Quelques ordres de grandeurs :

I un document office = 10–100 Ko

I un fichier de musique = 1–10 Mo

I un DVD = 4–8 Go

I un disque dur standard = 1–10 To = 1 millier de DVDs

I quantite de donnees que peut stocker la NSA au data center de Bluffdale(Utah, USA) = 3–12 Eo = 3 millions de disques durs de 2 To

Page 7: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Capacite de codage 7/30

I Combien de sequences binaires differentes peut-on ecrireI avec 1 bit ? 2 sequences : 0 et 1.I avec 2 bits ? 4 sequences : 00, 01, 10 et 11.I avec 3 bits ? 8 sequences : 000, 001, 010, 011, 100, 101, 110, 111.

. . .I avec n bits ? 2n sequences.

I Autrement dit, l’utilisation d’un bit supplementaire permet de doubler lacapacite de codage.

I Chaque sequence binaire permet ensuite de coder une valeur parmi cellesque l’on souhaite representer (caracteres, nombres, couleurs, . . . ).

I Inversement, pour trouver le nombre de bits necessaires au codage de vvaleurs, il faut trouver la plus petite puissance de 2 superieure a v .I (On obtient cette puissance, avec l’operation log2(v).)

Exemple : Codage de l’alphabet latin

I Pour representer les 26 caracteres de l’alphabet latin, il nous faut 5 bits.I (Car 24 = 16 < 26 et 25 = 32 ≥ 26.)

I On peut ensuite utiliser la representation suivante :I 00000→ a, 00001→ b, 00010→ c, . . . , 11001→ z.

Page 8: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Representation des entiers naturels 8/30

I Pour compter en binaire c’est le meme principe qu’en decimal :

0, 1, 10︸︷︷︸2

, 11︸︷︷︸3

, 100︸︷︷︸4

, 101︸︷︷︸5

, 110︸︷︷︸6

, 111︸︷︷︸7

, 1000︸︷︷︸8

, 1001︸︷︷︸9

, . . .

I On a donc :I 12 = 1 = 20

I 102 = 2 = 21

I 1002 = 4 = 22

I 10002 = 8 = 23

. . .

I Plus generalement, la valeur decimale associee au bit de poids n est 2n.

I On en deduit donc la valeur decimale d’une suite binaire bn−1bn−2. . .b0 :

bn−1 × 2n−1 + bn−2 × 2n−2 + . . .+ b0 × 20 =n−1∑i=0

bi × 2i

I Exemple :10011012 = 1× 26 + 1× 23 + 1× 22 + 1× 20 = 64 + 8 + 4 + 1 = 77

Page 9: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Plan 9/30

1. Codage de l’information1.1 Le systeme binaire1.2 Changement de base1.3 Operations binaires1.4 Codage du texte

Page 10: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Generalisation a une base B quelconque 10/30

I On connaıt maintenant le systeme binaire base sur les bits et le systemedecimal base sur les chiffres arabes.

I On appelle base B un systeme dans lequel on dispose d’un alphabet de Bchiffres (ou symboles) pour ecrire des nombres.I systeme binaire = base 2I systeme decimal = base 10

I Ce que l’on a vu pour le systeme binaire peut etre generalise :I xn−1xn−2. . .x0 dans une base B vaut xn−1 × Bn−1 + xn−2 × Bn−2 + . . .+ x0

en decimal.I Dans une base B, n chiffres permettent de coder Bn valeurs differentes.

I Exemples :I 56728 = 5× 83 + 6× 82 + 7× 81 + 2× 80 = 3002I En base 7 on peut coder, avec 3 chiffres, 73 = 343 valeurs differentes.

Page 11: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Les bases courantes 11/30

B Nom Chiffres Exemple :ecriture de 93

2 binaire 0, 1 101110128 octale 0, 1, 2, 3, 4, 5, 6, 7 1358

10 decimale 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 931016 hexadecimale 0, 1, 2, 3, 4, 5, 6, 7, 5D16

8, 9,A,B,C ,D,E ,F

Exemples d’utilisations :

I binaire : par l’ordinateur pour faire des calculs

I octale : pour representer les droits sur un fichier (lecture, ecriture,execution)

I hexadecimale : pour representer des sequences de bits de maniere compacte

Page 12: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Base 10 → Base B 12/30

Probleme : convertir un nombre decimal N en un nombre d’une base B

I On cherche a decomposer N en puissances de B :

N = rn−1 × Bn−1 + . . .+ r0 × B0

I Methode generale :I On divise N par B.I Le reste forme le chiffre de poids faible.

(Le reste est forcement dans l’intervalle [0..B − 1].)I On recommence l’operation avec le quotient.I On s’arrete lorsque le quotient vaut 0.

Page 13: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Base 10 → Base B — Exemple avec B = 2 13/30

conversion de 157 en binaire

division de 157 par 2 : 157 = 2 × 78 + 1 r0division de 78 par 2 : 78 = 2 × 39 + 0 r1division de 39 par 2 : 39 = 2 × 19 + 1 r2division de 19 par 2 : 19 = 2 × 9 + 1 r3division de 9 par 2 : 9 = 2 × 4 + 1 r4division de 4 par 2 : 4 = 2 × 2 + 0 r5division de 2 par 2 : 2 = 2 × 1 + 0 r6division de 1 par 2 : 1 = 2 × 0 + 1 r7Le quotient vaut 0 ⇒ on s’arrete

Conclusion : 15710 = 1 0 0 1 1 1 0 1r7 r6 r5 r4 r3 r2 r1 r0

Page 14: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Base 10 → Base B — Exemple avec B = 16 14/30

conversion de 157 en hexadecimal

division de 157 par 16 : 157 = 16 × 9 + 13 r0division de 9 par 16 : 9 = 16 × 0 + 9 r1Le quotient vaut 0 ⇒ on s’arrete

Conclusion : 15710 = 9 Dr1 r0

(13 est represente par le caractere D en hexadecimal.)

Page 15: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Base B → Base 10 15/30

Probleme : convertir un nombre d’une base B en un nombre decimal

I Il suffit de decomposer le nombre en fonction des puissances de la base etd’additionner.

I Exemples :I 10111012 = 1×26 + 0×25 + 1×24 + 1×23 + 1×22 + 0×21 + 1×20 = 9310

I E0716 = 14× 162 + 0× 161 + 7× 160 = 3 59110

Page 16: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Base 2 → Base 16 16/30

Probleme : convertir un nombre binaire en un nombre hexadecimal

I Avec 4 bits on peut coder 24 = 16 valeurs = 1 chiffre hexadecimal.I Methode generale :

I On groupe les bits par 4 en commencant par les bits de poids faible.I On rajoute si necessaire des bits de poids fort a 0 pour obtenir un nombre de

bits multiple de 4.I On convertit chaque suite de 4 bits en hexadecimal comme suit :

0000 ⇒ 0 0100 ⇒ 4 1000 ⇒ 8 1100 ⇒ C0001 ⇒ 1 0101 ⇒ 5 1001 ⇒ 9 1101 ⇒ D0010 ⇒ 2 0110 ⇒ 6 1010 ⇒ A 1110 ⇒ E0011 ⇒ 3 0111 ⇒ 7 1011 ⇒ B 1111 ⇒ F

I Exemples :I 101100112 = 1011 00112 = B316

I 111002 = 0001 11002 = 1C16

Page 17: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Base 16 → Base 2 17/30

Probleme : convertir un nombre hexadecimal en un nombre binaire

I Il suffit de coder chaque chiffre hexadecimal en une suite de 4 bits.I Exemples :

I A716 = 1010 01112

I 7EF2 = 0111 1110 111116

Page 18: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Plan 18/30

1. Codage de l’information1.1 Le systeme binaire1.2 Changement de base1.3 Operations binaires1.4 Codage du texte

Page 19: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

L’addition 19/30

I L’addition se fait (quelle que soit la base) comme en base 10.

I Exemple : addition de 149 = 100101012 et 305 = 1001100012 en binaire

1 1 1 retenues0 1 0 0 1 0 1 0 1

+ 1 0 0 1 1 0 0 0 1

1 1 1 0 0 0 1 1 0

On trouve bien 1110001102 = 454 = 149 + 305

Page 20: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Le depassement de capacite 20/30

I Avant de realiser une operation, l’ordinateur stocke les operandes dans desregistres (zones memoire tres rapides d’acces).

I Ces registres ont des tailles limitees (8, 32 ou 64 bits par exemple).

⇒ L’intervalle des valeurs que l’on peut y stocker est limite.I Si le resultat d’une operation ne tient pas dans le registre, certains bits

seront � oublies � et le resultat sera incorrect.I On appelle ce phenomene depassement de capacite ou overflow.I Exemple : addition sur 8 bits de 77 = 010011012 et 201 = 110010012.

1 1 1 1 retenues0 1 0 0 1 1 0 1

+ 1 1 0 0 1 0 0 1

1 0 0 0 1 0 1 1 0

⇒ Lorsque l’ordinateur effectue 7710 + 20110 avec des registres de 8 bits, iltrouve 000101102 = 2210.

I Le depassement de capacite est la source de nombreux bugs.

Exemple : crash d’ariane 5 en 1996 du a l’utilisation de registres de 16 bitspour des operations necessitant 64 bits.

Page 21: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Operateurs logiques 21/30

I En plus des operateurs arithmetiques (+,−,×, /) les programmes ontparfois besoin d’effectuer des operations logiques.

I On ne voit plus alors la sequence binaire comme un nombre mais commeune suite de valeurs vrai (1) ou faux (0).

I Les operateurs logiques sont des operateurs bit a bit : dans le resultat, lebit de poids p depend uniquement du (ou des) bit(s) de poids p dans le(s)operandes.

I On utilise pour cela une table de verite qui donne, en fonction des bitsdes operandes, le bit resultant de l’operation.

I Nous allons voir 4 operateurs logiques : ET, OU, OU exclusif et NON.I Exemples d’utilisation de ces operateurs :

I ET, OU et NON utilises pour certains calculs sur les adresses IP (voir courset TD 2)

I OU exclusif utilise par des algorithmes de cryptage (voir TD 1)

Page 22: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Le ET logique 22/30

I Les deux bits doivent etre a vrai.

I Table de verite du ET :

a b a ET b

0 0 00 1 01 0 01 1 1

I Exemple :

1 1 0 1 1 0 0 1ET 0 1 1 1 0 0 1 1

0 1 0 1 0 0 0 1

Page 23: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Le OU logique 23/30

I Au moins une des operandes doit etre a vrai.

I Table de verite du OU :

a b a OU b

0 0 00 1 11 0 11 1 1

I Exemple :

1 1 0 1 1 0 0 1OU 0 1 1 1 0 0 1 1

1 1 1 1 1 0 1 1

Page 24: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Le OU excusif (XOR) 24/30

I Une des deux operandes doit etre a vrai mais pas les deux.

I Table de verite du XOR :

a b a XOR b

0 0 00 1 11 0 11 1 0

I Exemple :

1 1 0 1 1 0 0 1XOR 0 1 1 1 0 0 1 1

1 0 1 0 1 0 1 0

Page 25: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Le NON logique 25/30

I Inversion du bit de l’operande.

I Table de verite du NON :

a NON a

0 11 0

I Exemple :

NON 0 1 1 1 0 0 1 1

1 0 0 0 1 1 0 0

Page 26: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Completude Fonctionelle 26/30

I Certains connecteurs logiques sont en realite redondant.

I Un ensemble de connecteurs logiques est fonctionnellement complet si cesconnecteurs sont suffisant pour ecrire toute fonction binaire.

I Exemples :I {ET, NON}I {OU, NON}

Exercice

Ecrire en fonction de ET et NON tous les autres operateurs.

Page 27: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Plan 27/30

1. Codage de l’information1.1 Le systeme binaire1.2 Changement de base1.3 Operations binaires1.4 Codage du texte

Page 28: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Comment representer du texte ? 28/30

I Une table de codage associe une sequence binaire a chaque caractere del’alphabet que l’on veut coder.

I L’ordinateur traduit ensuite chaque caractere du texte en la sequence debits correspondante en utilisant cette table.

I Il y a differentes tables de codage.I Elles se differencient par :

I l’ensemble des caracteres qu’elles permettent de coderI et le nombre de bits qu’elles utilisent pour coder les caracteres.

I Nous allons en voir 2 : l’ASCII et l’UTF-8.

I Pour voir le codage utilise pour un fichier : file <nom-du-fichier>.

I Exemple :

$ file message.txt

message.txt: UTF -8 Unicode text

Page 29: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Le codage ASCII 29/30

I ASCII = American Standard Code for Information InterchangeI caracteres ASCII codes sur 7 bitsI Permet de coder : les lettres de l’alphabet latin (minuscules et majuscules),

les chiffres arabes, les caracteres de ponctuation et d’autres caracteresspeciaux (ex : +, -, ESC (la touche Echap du clavier)).

I La table des caracteres ASCII :

0 1 2 3 4 5 6 7 8 9 A B C D E F

0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US2 SPC ! ¨ # $ % & ` ( ) * + , - . /3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?4 @ A B C D E F G H I J K L M N O5 P Q R S T U V W X Y Z [ \ ] ˆ6 ´ a b c d e f g h i j k l m n o7 p q r s t u v w x y z { | } ˜ DEL

I En ligne : les 3 bits de poids fort. En colonne : les 4 bits de poids faible.I Exemple : le caractere E est code 100︸︷︷︸

4

0101︸︷︷︸5

Page 30: 1. Codage de l’informationgmanzonetto/~M1101/M1101-cours-01.pdf · tera-bit Tb 1012 bits peta-bit Pb 1015 bits exa-bit Eb 1018 bits Bas ees sur les octets kilo-octet Ko 103 octets

Le codage UTF-8 30/30

I UTF-8 = Universal character set Transformation Format - 8 bits

I codage le plus utilise dans les systemes Linux

I caracteres UTF-8 codes sur 1, 2, 3 ou 4 octets

I permet de coder des textes d’a peu pres n’importe quel alphabet (arabe,chinois, grec, indien, latin, . . . )

I compatible avec l’ASCII : Un texte code en ASCII est code de la mememaniere en UTF-8.I (Les caracteres ASCII etant codes sur 7 bits on rajoute un bit de poids fort a

0 pour obtenir un caractere UTF-8 sur 1 octet.)

I Exemples de codage :

E → 01000101e → 11000011 10101001e → 11100010 10000010 10101100α → 11001110 10110001