Académique Documents
Professionnel Documents
Culture Documents
Cours Codage
Cours Codage
Eric Cariou
Universit de Pau et des Pays de l'Adour Dpartement Informatique
Eric.Cariou@univ-pau.fr
1
Reprsentation de l'information
Un ordinateur manipule des donnes Besoin de coder et reprsenter ces donnes, pouvant tre
De nature diffrente
De taille diffrente
Taille fixe de X chiffres : numro de tlphone, code postal ... De taille variable : nom, adresse, texte, film vido ... 2
Base binaire (2) et drives : base hexadcimale (16) ou octale (8) Origine de l'utilisation du binaire : absence ou prsence de courant lectrique (0 ou 1) comme base de codage 3
Historique
Antiquit
Chaque civilisation (Grecs, Romains, Chinois, Mayas ...) avait dvelopp des
Historique
Chiffres romains : V = 5 et X = 10
Base 12 : 3 phalanges et 4 doigts (le pouce sert positionner le chiffre) Base 60 : les doigts de la deuxime main comptent le deuxime chiffre (60 = 5 x 12)
5
Codage en base B
Codage en base B
Exemples
Base dcimale : 1234
De droite gauche : chiffre des units, des dizaines, des centaines, des milliers...
Valeur en dcimal (base 10) d'un nombre an an-1 ... a1 a0 cod dans une base B
anBn + an-1Bn-1 + ... a1B + a0 En prenant la valeur dcimale de chaque chiffre ax
Exemples
(1234)10 = 1 x 103 + 2 x 102 + 3 x 10 + 4 (11001)2 = 1 x 24 + 1 x 23 + 0 x 22 + 0 x 2 + 1 = 16 + 8 + 1 = 25 (1C04)16 = 1 x 163 + 12 x 162 + 0 x 16 + 4 = 4096 + 12 x 256 + 0 + 4 = 7172
avec A = 10, B = 11, C = 12, D = 13, E = 14, F = 15 8
Schma de Horner
Pour calculer la valeur dcimale N de anan-1...a1a0 cod en base B
Pn = anB + an-1 Pn-1 = PnB + an-2 Pn-2 = Pn-1B + an-3 ... P1 = P2B + a0 = N
Autres exemples
(11001)2, B=2, n=4
p4 = 1 x 2 + 1 = 3 p3 = 3 x 2 + 0 = 6 p2 = 6 x 2 + 0 = 12 p1 = 12 x 2 + 1 = 25
On procde par division entire par B Division du nombre dcimal N par B : donne une valeur v0 et un reste r0 On divise v0 par B : donne v1 et reste r1 On recommence pour v1 et ainsi de suite Quand vx < B, c'est fini (N)B = vxrx-1...r1r0 Note : si on continue une tape de plus, rx+1= vx avec vx+1 = 0 et on ne peut plus diviser
11
12
13
14
Cas particuliers
Cas particuliers
Exemple : (10110001101)2 en octal On regroupe par groupes de 3 bits : 010 110 001 101
On rajoute des zros au dbut au besoin
16
Cas particuliers
Exemple : (10110001101)2 en hexadcimal On regroupe par groupes de 4 bits : 0011 1000 1101 (0011)2 = 5 , (1000)2 = 8, (1101)2 = 13 (10110001101)2 = (58D)16
17
Cas particuliers
On a vu le codage des nombres entiers positifs dans diffrentes bases Mais on doit aussi pouvoir manipuler des
Nombres rels Nombres ngatifs
19
Codage d'un nombre entier positif en base B : (N)B = an an-1 an-2 ... a1 a0 Pour coder un nombre rel positif : on rajoute une partie fractionnaire aprs une virgule
(N)B = an an-1 ... a1 a0 , b1 b2 ... bm-1 bm La valeur en dcimal d'un tel nombre est alors donne par le calcul de
Exemples :
123,45 = 1 x 10 + 2 x 10 + 3 x 10 + 4 x 10 + 5 x 10
2 1 0 -1 -2
21
Multiplier la partie fractionnaire par B Noter la partie entire obtenue Recommencer cette opration avec la partie fractionnaire du rsultat et ainsi de suite Arrter quand la partie fractionnaire est nulle
Ou quand la prcision souhaite est atteinte Car on ne peut pas toujours obtenir une conversion en un nombre fini de chiffres pour la partie fractionnaire
La partie fractionnaire dans la base B est la concatnation des 22 parties entires obtenues dans l'ordre de leur calcul
0,6875x2=1,375=1+0,375 0,375x2=0,75=0+0,75 0,75x2=1,5=1+0,5 0,5x2=1=1+0 (12,6875)10 = (1100,1011)2 Conversion de 171 : donne (AB)16 Conversion de 0,3046875 0,3046875x16=4,875=4+0,875 0,875x16=14,0=14+0 (171,3046875)10 = (AB,4E)16 23
Principe et intrts
Avoir une virgule flottante et une prcision limite Ne coder que des chiffres significatifs N = +/- M x B
N = nombre cod M = mantisse : nombre de X chiffres de la base B E = exposant : nombre de Y chiffres de la base B +/- = codage du signe : positif ou ngatif
Le nombre est prsent sous forme normalise pour dterminer la mantisse et exp.
24
26
Ncessit de savoir sur combien de bits on code le nombre pour dterminer quel bit code quoi
Un ordinateur manipule des nombres binaires sous forme de 8 bits = un octet Donnes codes sur un ou plusieurs octets : 8 bits, 16 bits, 32 bits, 64 bits ...
Avec p bits, on code N valeurs avec 0 N 2p - 1 Avec 16 bits, on peut coder 2 frentes
16
28
On a 15 bits pour coder la valeur absolue du nombre soit 2 = 32768 valeurs possibles
Pour le positif : de 0 32767 Pour le ngatif : de -0 -32767
p-1 p-1
- 1) N 2
-1
29
Nb positif : comme pour un entier non sign Nb ngatif : complment logique de son oppos positif Bit de poids fort code le signe : 0 = positif, 1 = ngatif
Complment arithmtique
Nb positif : comme pour un entier non sign Nb ngatif : complment arithmtique de son oppos positif Bit de poids fort code le signe : 0 = positif, 1 = ngatif
Ce codage est le plus utilis, c'est le standard de fait pour coder les entiers signs Intrts
Proprits du complment 2
Les oprations arithmtiques (addition, soustraction, multiplication, division) sont ralisables dans toute base B
Avec mmes rgles que pour la base dcimale Retenues galement mais dpendant de la base Quand on additionne 2 chiffres a et b dans la base B
35
Addition binaire
Exemple : 10 + 1011 :
0010=2 +1011=11 1101=13
Addition de 2 nombres de 4 bits : on a besoin dans cet exemple de 5 bits Potentiel problme de dbordement
36
Dbordement
Dbordement : la taille alloue (8, 16 ... bits) au codage d'un entier est trop petite pour coder ou stocker le rsultat d'un calcul Exemple avec addition, sur 8 bits, non sign :
10110011 + 10000101 = 100111000 Besoin de 9 bits pour coder le nombre Stockage du rsultat impossible sur 8 bits
Multiplication binaire
Comme en dcimal N'utilise que du dcalage de bits et additions Exemple : 101 x 110 : 101=5 x110=6 Dcalage d'un bit vers la gauche = 000 multiplication par 2 +1010 Dcalage d'un bit vers la droite = division entire par 2 +10100 11110=30
38
Soustraction binaire
Autre technique
Utiliser les complments 2 et ne faire que des additions
39
Codage en complment 2
Simplifie les additions et soustractions On peut additionner directement des nombres, quels que soient leurs signes, le rsultat sera directement correct (si pas de dbordement) et bien cod Soustraction d'un nombre = addition de son complment 2
A B = A + comp2 (B) Valable dans tous les cas, quels que soient les signes de A et B L aussi le rsultat est directement valide si pas de dbordement 40
Gestion des dbordements diffrent de l'addition non signe Une retenue sur un bit supplmentaire par rapport la prcision ne veut pas forcment dire que le rsultat n'est pas stockable avec la prcision utilise On regarde les retenues des deux derniers bits (poids forts) additionns pour savoir s'il y a eu dbordement
Si retenues identiques (00 ou 11) : pas de dbordement Si retenues diffrentes (01 ou 10) : dbordement
On nglige systmatiquement la retenue sur le bit supplmentaire pour dterminer le rsultat final
S'il n'y a pas de dbordement, le rsultat tient dans la prcision requise, la retenue n'a aucune signification 41
Dbordement (suite)
Rgles valables pour toute addition ou soustraction utilisant des entiers signs cods en complment 2
Avec ce mode de codage des nombres signs, le dbordement est diffrent du codage des entiers non signs
Le rsultat est directement cod en complment 2 Sa valeur absolue est trouve par le calcul du complment 2 42
Exemples de calcul avec codage des entiers signs en complment 2, prcision de 5 bits
9 = (01001)2 -9 = (10111)2 8 = (01000)2 -8 = (11000)2 5 = (00101)2 -5 = (11011)2
Rsultat tient sur 5 bits mais calcul faux Car 2 dernires retenues sont diffrentes 43
Rsultat ne tient pas sur 5 bits mais calcul correct Car 2 dernires retenues sont identiques Le bit de dbordement (le 6me bit) est ignorer, il n'a aucune signification Le 5me bit = 0 : nombre positif
Rsultat = (00001)2 = 1
44
Calcul correct car 2 dernires retenues sont identiques Le 5me bit = 1 : nombre ngatif
46
Calcul correct car 2 dernires retenues sont identiques Le 5me bit = 1 : nombre ngatif
Donc rsultat de - 5 8 = - 13
47