Vous êtes sur la page 1sur 24

INSTITUT

UNIVERSITAIRE DE TECHNOLOGIE
Dpartement Geii Electronique
FAX

CACHAN
9 avenue de la division Leclerc BP140 94234 CACHAN CEDEX 0141241100 -

0141241199

Cours

Numration et codages
CiPr - Module S1

J. Senpau Roca - A. Priou GE1 Septembre 2003

Nom de ltudiant :

Numration et codages
Ce document est destin prsenter les principaux codages utiliss en informatique et en lectronique numrique. Car si nous autres humains comptons en dcimal (base 10 : 0, 1, 2,8, 9), les ordinateurs et autres circuits lectroniques ne connaissent que le binaire (0, 1) ; de plus, ils manipulent des mots binaires au format fini, cest--dire composs dun nombre de bits fig. Ce document expose principalement la faon dont seront reprsents par un ordinateur des nombres tels que 2003, -164 (entiers), -596.78095 ou 6,02.1023 (rels).

Table des matires


I. _______________________________________________________________ Introduction 2
A. ______________________________________________________________ Nombres et codes 2 B.___________________________________________________________ Quest-ce quun code ? 2 C. _______________________________________________________ Quest-ce quun nombre ? 2 D. ________________________________________________________ Contenu de ce document 2

II. ____________________________________________Systmes de numration des entiers 4


A. ____________________ Les diffrentes bases numriques pour exprimer les entiers naturels 4
1. _______________________________________________________________La base dcimale (base 10) 4 2. ____________________________________________________ Gnralisation une base quelconque B 4 3. __________________________________________________________ Le code Binaire Naturel (base 2) 4 4. ___________________________________________________________ La base hexadcimale (base 16) 6

B.________________________ Conversion dun entier naturel de la base 10 vers une autre base 7 C. _______________________________ Codes binaires pour les entiers signs (nombres relatifs) 7
1. ________________________________________________________________ Rappel : complment 1 7 2. ________________________________________________ Comment grer le signe dun nombre relatif ? 8 3. ______________________________________ Le code Signe valeur absolue (non utilis en pratique) 8 4. ______________________________________ Le code Complment deux (utilis presque partout) 8 5. ___________________________________________________ Arithmtique binaire en complment 2 10 6. ____________________________________________________ Le code Binaire dcal (utilis parfois) 12

III. ______________________________________ Codage des nombres rels ( flottants ) 14


1. ____________________________________________ Codage en virgule fixe dun rel infrieur 1 14 2. __________________________________________________________ Nombres virgule flottante 14

B._________________________________________________________________ Normalisation 15 __________________________________________________ Normalisation des rels en base 2 15


1. __________________________________________________Codage IEEE simple prcision sur 32 bits 15 2. _________________________________________________ Codage IEEE double prcision sur 64 bits 16 3. _________________________________________________________ codage prcision tendue 80 bits 16

IV. _____________________________________________________ Autres codes binaires 17


A. ___________________________________________________________________ Code BCD 17 B.__________________________________________________________________Code de Gray 18

V. ______________________________________________________________ Conclusion 19 VI. ________________________________________________________________Annexes 20


1. __________________________________________________________________ Multiplication binaire 20 2. _______________________________________________________ Arithmtique des nombres flottants 23

IUT Cachan - GEii1

JSR, rv.AP - 2003

I. Introduction
A. Nombres et codes
Nous manipulons tous les jours des nombres et des codes. Par exemple, les quantits sont exprimes avec des nombres et la monnaie est une occasion frquente de manipuler des nombres. Par contre, le code secret dune carte bancaire est fait de chiffres, mais ce nest pas un nombre : cest un code. Un numro de tlphone est aussi un code (pas un nombre), ainsi que le numro de scurit sociale. Dans tous ces exemples, les chiffres sont la base de lexpression des nombres ou des codes. Nous acceptons assez naturellement lusage des chiffres pour exprimer des choses de nature finalement assez diffrentes (des nombres ou des codes). Les chiffres utiliss sont ceux de la base dix (0,1, 2,8,9). Dans les ordinateurs, et plus particulirement en lectronique numrique, il se passe la mme chose ; on utilise les chiffres pour reprsenter des nombres et des codes ; la seule diffrence est quil sagit des chiffres de la base deux (0 et 1).

B. Quest-ce quun code ?


Pour la carte bancaire, cest un groupement de quatre chiffres (de la base dix). Pour le numro de tlphone, cest un groupement de dix chiffres. Pour le numro de scurit sociale, on dispose de 13 chiffres. Les chiffres composant le code sont ordonns. Le nombre de chiffres est constant. Mais attention, nimporte quel groupement de quatre chiffres ne donne pas un code valide pour une carte bancaire. Le code est fabriqu en respectant une technique particulire. Par exemple, le numro de S.S. est compos de plusieurs codes ou nombres ayant une signification particulire : code du sexe, anne et mois de naissance, codes du dpartement et du lieu de naissance, numro dordre de naissance. De mme, les deux premiers chiffres dun numro de tlphone correspondent la zone gographique du correspondant ou au service. On peut donc conclure que le code est une reprsentation signifiant quelque chose.
Un code est la reprsentation dune signification

La relation entre le code et le sens qui lui est attribu est laffaire dune convention. Quand on connat la convention de codage, il est possible de procder un dcodage ou plus simplement vrifier au moins si le code est valide. On sait par exemple que le numro de tlphone 14.33.22.01.45 nest pas valide (les deux premiers chiffres 14 ne correspondent aucun code de zone ou de service valide). En lectronique numrique, on utilise beaucoup de codes. Chaque systme, chaque constructeur (de composant ou de matriel), chaque organisme de normalisation, etc. invente un ou plusieurs codages. La seule chose retenir, cest quil faut avoir en sa possession les conventions de codage. Par exemple, pour comprendre le langage de programmation dun microprocesseur, il faut avoir sa disposition le manuel dcrivant le jeu des instructions de ce composant.

C. Quest-ce quun nombre ?


Un nombre reprsente une valeur. Notre culture est telle que la manipulation des nombres est quasi naturelle.
Un nombre est la reprsentation dune valeur

La valeur est reprsente au moyen de chiffres crits de faon ordonne. La diffrence par rapport au code est que chaque chiffre composant le nombre est porteur dune valeur. Par exemple, le nombre 421 est compos du chiffre 4 qui reprsente la valeur 400, du chiffre 2 qui reprsente la valeur 20 et du chiffre 1 qui reprsente la valeur 1. La convention qui permet dattribuer une valeur un chiffre sappelle la pondration. Le 4 est pondr par la valeur 100, le 2 par la valeur 10 et le 1 par la valeur 1. Les valeurs de pondration sont les puissances entires positives successives dun nombre de base (ici 10).
Les nombres sont forms laide dun code pondr

Une mme valeur peut tre exprime de diffrentes faons selon la base de pondration utilise. On note (421)10 une valeur exprime en base 10. La mme valeur exprime en base 3 scrit (120121)3. Il sagit bien de la mme valeur. Si vous avez 421 dans votre porte-monnaie, vous avez (421)10 euros, bien sr. Vous ne serez pas plus riche (malgr de trompeuses apparences) si vous dcidez de compter en base 3 ; certes vous compterez (120121)3, mais attention, il ne sagit pas de cent vingt mille cent vingt et un euros ... il faut plutt dire un deux un zro deux un euros en base 3.

D. Contenu de ce document
Le prsent document est principalement centr sur les codes numriques utiliss en informatique (microprocesseurs,) et en lectronique numrique (convertisseurs, compteurs, afficheurs la liste est trs longue). Il commence par prsenter les diffrentes bases numriques qui permettent de coder les entiers naturels, ainsi que les moyens de passer dune base lautre. On se limite aux bases utiles en lectronique et en informatique : base 10, base 2 et base 16. On aborde
IUT Cachan - GEii1

JSR, rv.AP - 2003

ensuite les codes qui permettent de coder les entiers signs. Puis sont prsents les techniques de codage des rels (reprsentation normalise). Enfin, le document aborde des codes ayant des proprits particulires ; les codes BCD et de Gray.Le cours se termine par un bref aperu des calculs arithmtiques dans les machines binaires (en annexe).

IUT Cachan - GEii1

JSR, rv.AP - 2003

II.

Systmes de numration des entiers

Un systme de numration est muni dune base et de rgles de composition des nombres. Voici quelques rappels de ces notions.

A. Les diffrentes bases numriques pour exprimer les entiers naturels 1. La base dcimale (base 10)
Cest la base de rfrence, car il suffit danalyser comment nous grons la base dix pour en dduire les autres bases. Un nombre est compos de chiffres (digit). Un chiffre est un symbole extrait dun ensemble ordonn : la base dix.
base dix = { 0,1,2,3,4,5,6,7,8,9 }

Par exemple, N=1989 est lcriture dun nombre en base 10, qui sous-entend la dcomposition suivante : N = 1989 = 1x1000 + 9x100 + 8x10 + 9 10 De faon plus gnrale, les chiffres qui composent le nombre N dans la base 10 sont les coefficients ai de la dcomposition de N en somme de puissances de 10 (forme polynomiale) : i=M = a 10i 10 i=0 i

N On peut constater que :

M IN

le rang i dun coefficient ai est lexposant de la puissance de dix qui lui est associe. Dans lexemple avec N=1989, a 3 = 1 car 1000=1 x 103. le chiffre de rang 0, cest--dire le plus droite, est appel le chiffre (digit) de plus faible poids (LSD : Least Significant Digit). Le chiffre le plus gauche est le chiffre de plus fort poids (MSD : Most Significant Digit).

2. Gnralisation une base quelconque B


Soit la base B forme de :
base B = {0, 1, ...., B-1} avec B IN

Tout nombre entier naturel N peut sexprimer en base B avec n chiffres ordonns, sous la forme :
N = a ... a a B n-1 1 0

)B

Cela signifie que le nombre N se dcompose en somme de puissances de B (forme polynomiale), sous la forme :
i=n-1 N = a Bi B i=0 i

a base B, i

n IN et n>0

3. Le code Binaire Naturel (base 2)


Aussi appel binaire pur .
base 2 = { 0,1 } Une remarque pour commencer : le code binaire naturel est utilis partout dans les ordinateurs. Mais attention, llectronicien ou linformaticien prfre la base 16 (ou hexadcimale) la base 2 : on peut dire que la base 16 est presque quivalente , car on passe trs facilement de la base 16 la base 2 et rciproquement (cest d au fait que 16 est une puissance de 2). Ce sera donc la base 16 quil faudra manipuler, de prfrence la base 2.

Reprenons notre code binaire naturel, avec un exemple : N2= (1011001)2. Que vaut ce nombre en dcimal ?
IUT Cachan - GEii1

JSR, rv.AP - 2003

Les chiffres 0 et 1 sont ordonns de gauche droite, du MSD au LSD. Le dveloppement de la forme polynomiale associe fournit la valeur dcimale du nombre crit en binaire : 6 5 4 3 2 1 0 N = 1 . 2 + 0 . 2 + 1 . 2 + 1 . 2 + 0 . 2 + 0 . 2 + 1 . 2 = 89 10 Remarques : la taille dun nombre binaire (le nombre de chiffres qui le composent) est 3 4 fois plus grande quen dcimal. Do lintrt de la base hexadcimale, beaucoup plus compacte que la base binaire et qui sen dduit facilement. on va tellement utiliser le binaire quil faut connatre, au moins, les 10 premires puissances de 2, et savoir retrouver trs vite le code des 8 premiers entiers: 20 21 22 23 24 25 26 27 28 29 1 2 4 8 16 32 64 128 256 512 dcimal 0 1 2 3 4 5 6 7 8 79 binaire naturel dans le format 4 bits 0000 0001 0010 0011 0100 0101 0110 0111 1000 1111

Vocabulaire : Les valeurs remarquables connatre : 210 = 1024 se note k. Exemple : 1 ko (kilo octet) vaut 1024 octets. 220 = 1 048 576 se note M (mega). 230 = 1 073 741 824 se note G (giga).

un chiffre binaire est appel bit ("binary digit" en anglais) ; en franais, "lment binaire" (eb), trs peu utilis. le bit le plus gauche est appel le bit de poids fort ou MSB (Most Significant Bit) ; le bit le plus droite est le bit de poids faible ou LSB. un nombre binaire est souvent appel "mot binaire" car on le trouve dans un format fixe. le format dun mot binaire est sa taille en nombre de bits. Pour un format de n bits, les nombres exprimables appartiennent lintervalle [0, 2n -1], ce qui fait 2n valeurs diffrentes. La valeur qui suit le plus grand nombre exprimable dans le format n bits est 2n.
On peut avoir nimporte quel format, mais certains sont des classiques et possdent mme un nom :
4 bits 8 bits 16 bits 32 bits 64 bits En franais quartet octet demi mot mot mot long En anglais digit byte half word word long word Nombre de valeurs diffrentes possibles 16 256 65536 4 294 967 296

64 k 4G

Cette notion de format est trs importante, car elle est associe la taille relle (physique) des mots binaires que la machine manipule. Cest dailleurs le format qui est la caractristique utilise pour classer les microprocesseurs. Remarques sur le comptage binaire naturel : le format tant fix (p bits par exemple), un nombre N issu dun comptage, exprim en binaire naturel, volue selon N modulo 2p. Cela signifie quil repasse 0 aprs tre arriv 2p -1.
IUT Cachan - GEii1

JSR, rv.AP - 2003

la squence des nombres en binaire naturel possde une proprit utile pour sa composition : en observant la colonne la plus droite (le LSB, ou rang 0), on voit quil y a une alternance de 0 et de 1 ; au rang 1, on trouve une alternance de deux 0 puis de deux 1 ; ainsi de suite : au rang k, il y a une alternance de 2k symboles 0 et de 2k symboles 1. on note aussi que dune ligne de la squence la suivante, cest lorsque le bit de rang i passe de la valeur 1 la valeur 0 que le bit de rang i+1 change dtat.

4. La base hexadcimale (base 16)


Ce sera la base la plus utilise par la suite. On peut considrer que cest une variante compacte du binaire ! Cest pourquoi les valeurs seront presque toujours exprimes en hexadcimal (en abrg, hexa), mme si le contexte parle de code binaire. Cette interchangeabilit entre binaire et hexa vient du fait que 16 est une puissance de 2. base 16 = hexadcimal = { 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F} dcimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 hexa 0 1 2 3 4 5 6 7 8 9 A B C D E F binaire 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

Tout nombre N peut sexprimer en base hexadcimale avec n chiffres ordonns, sous la forme : N16 = (a n 1 ... a1 a 0 )16 = 0x an-1a1a0 Cette criture signifie que le nombre N se dcompose en somme de puissances de 16, sous la forme :
i=n-1 N16 = a 16i i i=0

a base 16, i

n IN et n>0

En langage C (cette criture tend simposer partout), les nombres hexadcimaux scrivent avec le prfixe 0x. Par exemple, (1E7A)16 scrit 0x1E7A. (1E7A)16 sera parfois not 1E7Ah (h ou H pour Hexadcimal) ; on doit prononcer un e sept a . On revient la valeur dcimale en utilisant la dcomposition en somme de puissances de 16 ; il suffit de bien traduire en dcimal les symboles A F. Ainsi : 3 2 1 0 0x1E7A = 1E7Ah = 1 x 16 + 14 x 16 + 7 x 16 + 10 x 16 = 780210 Passage Hexa <-> Binaire : Sur le tableau ci-dessus, on voit quun symbole hexadcimal correspond 4 bits en binaire. La technique est alors vidente : on partage en tranches de 4 bits le mot binaire et on traduit chaque tranche en son quivalent hexadcimal (attention ! en commenant par le bit de poids le plus faible, droite ; il faut parfois rajouter des 0 gauche). Par exemple : (10111001000011001110001) = 2 0101 1100 1000 0110 0111 0001 =

0x5C8671 Inversement, on traduit chaque symbole hexadcimal en binaire sur 4 bits: 53B0h = 0101 0011 1011 0000 = (0101001110110000)

2
JSR, rv.AP - 2003

IUT Cachan - GEii1

Intrt de lhexadcimal par rapport au binaire naturel: la rduction par 4 du nombre de symboles pour exprimer les nombres binaires (code hexa 4 fois plus compact). les formats des nombres binaires dans les machines tant des multiples de quatre, on peut toujours utiliser lhexadcimal. le format dun symbole hexa (4 bits) est aussi celui qui est ncessaire pour exprimer les chiffres dcimaux.

Nous avons parcouru rapidement les trois bases entires dont nous ferons lusage. A prsent, ce sont les procds de conversion que nous devons aborder. Encore une fois, lhexadcimal aura une place de choix.

B. Conversion dun entier naturel de la base 10 vers une autre base


Pour convertir lcriture dun nombre entier naturel de la base 10 en une autre base B, on procde par divisions entires successives par B. Le reste de chaque division fournit un des coefficients ai recherchs, le quotient sert la division entire suivante. Prenons comme exemple le nombre dcimal N=167957, traduire en hexadcimal et en binaire. On procde une srie de divisions par 16 ; tous calculs faits, il vient : 167957 10497 656 41 2 Ainsi : N = (167957)10 = (29015) = 0x29015 16 Pour obtenir N en binaire, il suffit de faire la conversion (facile) hexadcimal->binaire : chaque digit hexadcimal est converti en un groupe de quatre bits, do : (29015) 16 = (0010 1001 0000 0001 0101) 10 2 = 10497 x 16 + 5 = = = = 656 x 16 + 1 41 x 16 + 0 2 x 16 + 9 0 x 16 + 2 2 est le coefficient a4 (les coefficients suivants sont tous nuls) 5 est le coefficient a0 (LSD) 1 est le coefficient a1

N = (167957) Remarque :

= (101001000000010101)2

Cette technique de division entire marche aussi avec la base 2 pour obtenir directement le code binaire de N. Ce nest pas conseill (car plus long !) : il est toujours prfrable de passer par lhexadcimal, et de traduire

ensuite (si ncessaire !) en binaire.


A lusage, on se rend compte quon utilise trs peu lcriture binaire, car elle est lourde et peut facilement tre remplace par lhexadcimal. Dans les langages de programmation tel que le C, la reprsentation des nombres en binaire nexiste pas : lhexadcimal et le dcimal sont les seules bases disponibles.

C. Codes binaires pour les entiers signs (nombres relatifs)


Tous les nombres vus jusqu prsent taient des entiers naturels, donc positifs ou nuls. Voyons maintenant comment coder les nombres entiers signs, qui peuvent tre ngatifs, positifs ou nuls.

1. Rappel : complment 1
Le complment un dun bit a est le bit quil faut ajouter a pour obtenir 1. Il vaut 1 si a vaut 0, et 0 si a vaut 1. On remarque que a et son complment 1 sont toujours diffrents lun de lautre ; on dit aussi quils sont linverse lun de lautre (mais ce nest pas trs heureux par rapport la notion mathmatique de linverse dun nombre). Pour former le complment 1 dun mot binaire, on applique la rgle sur chaque bit du mot.

IUT Cachan - GEii1

JSR, rv.AP - 2003

2. Comment grer le signe dun nombre relatif ?


Nous avons vu le code binaire naturel avec lequel on peut reprsenter les nombres entiers de lensemble IN. Pour faire du calcul arithmtique, il faut pouvoir reprsenter les nombres relatifs. Dune manire gnrale, on considre que le signe dun nombre est une information binaire :
Le signe positif est attribu aux nombres positifs ou nuls Le signe ngatif est attribu aux nombres strictement ngatifs

Avec ces conventions, il est possible de reprsenter le signe laide dun bit, qui sera plac gauche du nombre. Selon le codage utilis, la valeur attribue au bit de signe positif (0 ou 1) change. On retient trois modes dexpression des nombres entiers en binaire sign dans un format donn : signe valeur absolue, complment deux et binaire dcal. Le code complment deux est de loin le plus utilis.

3. Le code Signe valeur absolue (non utilis en pratique)


Le nombre binaire reprsent avec cette convention est form de deux parties. Le bit le plus gauche est le bit de signe ; droite, on trouve la valeur absolue du nombre. Bien sr, le plus logique est que le signe des nombres positifs ou nuls soit cod par un bit de signe 0 ; ainsi on conserve |x| = x si x > 0. Exemple avec un nombre cod sur huit bits : on trouve un bit de signe et la valeur absolue sur sept bits : (+57) = (00111001) 10 signe valeur absolue (-57) = (10111001) 10 signe valeur absolue

Ce type de reprsentation des nombres relatifs est rarement employ, car il conduit des complications matrielles pour la ralisation et larithmtique. Mais on retrouve ce principe dans le codage des nombres rels virgule flottante.

4. Le code Complment deux (utilis presque partout)


Le code complment deux (code C2) est LA solution pour reprsenter les nombres entiers relatifs. Il est utilis dans tous les microprocesseurs pour coder les entiers signs (en langage C, pour les types long int, short int). a) Rgles de codage Pour un entier positif, le code C2 se contente de reprendre le code binaire naturel (CBN). Mais attention, la dynamique de codage est divise par deux pour un format constant (car on perd le bit de signe). Par contre, pour les entiers ngatifs, le code C2 introduit un bit de signe et une technique de codage particulire, inspire par le fait que (par dfinition), tout entier relatif x a un oppos not -x (except 0) tel que : x + -x = 0 Enonc des rgles de codage en complment 2 sur n bits : Soit A un entier positif. Le code C2 sur n bits de A est le code binaire naturel de A. Lentier ngatif A est cod en C2 sur n bits par le code binaire naturel de 2n-A (qui est positif) :
Code C2 de A = code binaire naturel de (2n A)

On remarque que dans ce mode de reprsentation des nombres relatifs, le bit de signe des nombres positifs vaut 0. Exemple : En format 8 bits, prenons x = (0110 0110)2 = 0x66. En dcimal ce nombre scrit : x = (102)10 x est positif, puisque son bit de signe vaut 0. obtenu grce la somme en puissances de 16 : x = 6*16+6*1=102. Appliquons la rgle du complment deux en format 8 bits pour trouver le code C2 de -x. 28 = 256 donc : -x C2 = (256 - 102)10 = (154)10 or (154)10 scrit en hexa : (9A)16 donc le code C2 de x vaut :
IUT Cachan - GEii1

JSR, rv.AP - 2003

(-x) C2 = (9A)16 = (10011010) 2

aprs conversion hexabinaire


8 . En effet :

On vrifie par laddition que les deux nombres sont complmentaires 2 + 1 01100110 10011010 00000000

8 Dans le format 8 bits, le rsultat est nul, car la retenue au rang 2 est hors format, elle nappartient pas au rsultat.

Si on cherche le code C2 de x sur 16 bits (voir aussi le paragraphe extension de signe page suivante): x = 0x0066 = (00000000 0110 0110)2 = (102)10 inchang part les 0 rajouts gauche (-x) C2 = (216 - 102)10 = (65434)10 = (FF9A)16 = (11111111 10011010)2 Quelques codes caractristiques connatre : Lentier 0 scrit (0000.00) C2 quel que soit le format Lentier (-1)10 scrit (11111111) C2 = 0xFFFF quel que soit le format Le plus grand entier positif sur n bits scrit (011111.11) C2 = 0x7FF ; il vaut (+2n-1-1)10 Le plus grand entier ngatif sur n bits scrit (100000) C2 = 0x8000 ; il vaut (-2n-1)10

b) Technique de calcul pour trouver le code C2 de loppos dun nombre : Technique pour obtenir le code C2 de N partir du code C2 de N : Pour former les chiffres du complment la base B dun nombre exprim dans cette base, on procde de droite gauche. Tous les chiffres nuls situs droite sont recopis. Au premier chiffre non nul, on fait correspondre le complment la base B ; pour les suivants, on fait correspondre le complment (B-1). En lectronique numrique, il faut bien sr travailler en base 16. Le calcul du complment 16 devient un raccourci de calcul du complment 2, mais nous continuerons de parler du complment deux (C2) mme en travaillant en hexadcimal ! Soit par exemple le nombre N=(60A7E904) : 16 son complment 16, cest--dire le code C2 de N, scrit directement (calcul de tte) : (9F5816FC) . 16

Explication : pour le LSB non nul, on prend le complment 16 :16-4=12=C en hexa. Pour les autres chiffres, on prend le complment 15, soit 15-0=F, puis 15-9=6, etc Autre exemple : soit N = (5001BC97024400) 16 le code C2 de N, cest--dire son complment 16, est (toujours de tte) : (AFFE4368FDBC00) . 16

Dans ce dernier exemple, il y a quatorze chiffres hexadcimaux, cela correspond 56 bits en base deux ! Comme le montrent ces exemples , le passage au binaire nest absolument pas ncessaire. En pratique, il est rarement utile Malgr la mthode de calcul qui utilise le complment seize, nous continuerons de parler du complment deux. Par dfinition, laddition des nombres en binaire pur est la mme opration que pour les nombres en complment deux. Cest vrai parce que le format des mots binaires est fixe. En consquence, le mme matriel est utilis pour raliser les calculs pour les deux modes de reprsentation des nombres binaires ; do lutilit du code complment 2. c) Dynamique de codage Pour un format donn, la dynamique de codage correspond aux intervalles de valeurs positives et ngatives quon peut exprimer. Comme le signe occupe le bit de poids fort, cela rduit dun bit le format utile pour le codage du reste de la valeur (soit dun facteur 2 le plus grand entier positif exprimable en C2). La dynamique de codage pour un format de M bits est :
IUT Cachan - GEii1

N[-2

M-1

, +2

M-1

-1]
JSR, rv.AP - 2003

0 tant considr comme un entier positif, la dynamique inclut 2

M-1

nombres positifs et autant de ngatifs.

Dune manire gnrale (dans une base B), les nombres ngatifs sont reconnaissables par le fait que le chiffre de poids fort est suprieur ou gal B/2. En binaire, cela correspond bien au bit de signe gal 1, tandis quen hexadcimal cela correspond un chiffre de poids fort suprieur ou gal 8. d) Extension de signe Les calculs prcdents se font dans un format donn du nombre. Un nombre doit conserver sa valeur mme sil est exprim dans dautres formats. Cela veut dire, entre autres, que dans un changement de format, un nombre positif reste positif et un nombre ngatif reste ngatif. Nous nenvisageons que laugmentation du format. En binaire, laugmentation de format entrane le dplacement du bit de signe vers la gauche afin que le bit de signe soit toujours le bit de poids fort (MSB). Par exemple N = (0100)2 = (00000100)2 est vident ; le nombre N est positif en format 4 bits, il reste positif et reprsente la mme valeur en format 8 bits. En rptant les zros gauche, nous avons propag le bit de signe sur toutes les nouvelles positions gauche. Pour le nombre ngatif, dont le bit de signe est 1, on opre de la mme faon, cest--dire quon propage le 1 sur toutes les nouvelles positions gauche. Par exemple : -N = (1100)complment 2 = (11111100)complment 2 En notation hexadcimale, si le nombre de dpart est positif, alors le chiffre de poids fort est infrieur 8 ; lextension du signe ajoute gauche seulement des zros. Si le nombre est ngatif, alors le chiffre de poids fort est suprieur ou gal 8 ; lextension du signe ajoute donc des F gauche. Rgle pour lextension de signe : on recopie le bit de signe (0 ou 1) dans les positions supplmentaires gauche. Exemples : (2E97)complment 2 = (00002E97)complment 2 (97)complment 2 = (FFFFFF97)complment 2
format 8 bits format 32 bits format 16 bits format 32 bits format 4 bits format 8 bits

(A037)complment 2 = (FFFA037)complment 2 (4E)complment 2 = (0000004E )complment 2


format 8 bits format 32 bits

format 16 bits

format 32 bits

5. Arithmtique binaire en complment 2


a) Addition Laddition en binaire seffectue de la mme faon quen dcimal. 0+0= 0+1= 1+0= 1+1= retenue 0 0 0 1 somme 0 1 1 0

Il y a deux rsultats, la somme et la retenue. La somme est le bit poids 0; la retenue est un bit de rang suprieur. Laddition binaire est simple et ne ncessite pas de long discours. b) dpassement de capacit dans laddition : La reprsentation des nombres binaires dans les calculateurs tant dans un format fixe, il y a des limites demploi de laddition. 0 0 1 0 <- retenues 1 0 1 + 0 0 1 0 1 0 correct 1 1 0 0 <-retenues 1 1 0 + 0 1 1 0 0 1 incorrect

Ces deux additions ont t faites dans le format 3 bits en binaire naturel. Dans le premier cas, la retenue au del du troisime bit est nulle. Le rsultat dans ce format est correct (5+1=6). Dans le deuxime cas, la retenue au del du troisime bit est gale un, donc le rsultat est faux dans le format 3 bits (6+31).
IUT Cachan - GEii1

10

JSR, rv.AP - 2003

Le dpassement de capacit survient quand une retenue est gnre au del du format des nombres. c) Dbordement lors dune addition : La notion de dbordement est associe au binaire sign (complment deux ou binaire dcal). binaire + 0 1 0 0 0 1+ 0 1 1 dcimal +2 +1 +3
la somme de deux nombres positifs est positive, OK

Ce premier calcul renvoie un rsultat correct. Voici un autre exemple o les choses se passent moins bien (on utilise le complment deux) : binaire + 0 1 0 0 1 1+ 1 0 1 dcimal +2 +3 -3
la somme de deux nombres positifs est ngative, ae !

Cette fois, la somme de deux nombres positifs fournit un rsultat ngatif ! Cest bien sr impossible. Le dbordement doit son existence au fait que les nombres ont un format fixe et que le bit de poids fort (MSB) est le bit de signe. En cas de dbordement, ce bit de signe est cras et le rsultat est faux. Ces problmes de dpassement de capacit et de dbordement se retrouvent dans les units de calcul des microprocesseurs. Afin de savoir quand peut se manifester un dbordement, posons le problme de laddition de deux nombres binaires cods en complment deux dans le format n bits. Commenons par le cas o les deux nombres x et y sont de signes opposs. Soit x [-2n-1, -1] et y [0, 2n-1-1] .

Alors leur somme z = x + y appartient lintervalle z [-2n-1, 2n-1-2] Cet intervalle de z est inclus dans lensemble de dfinition, donc il ne peut pas y avoir de dbordement quand les nombres sont de signes opposs. Si les deux nombres sont de mme signe : il est vident que la somme de deux nombres positifs peut donner un rsultat qui est suprieur 2n-1-1; cest lorigine du phnomne du dbordement. Supposons que x et y soient positifs, soit x [0, 2 n-1 - 1] et y [0, 2 n-1 - 1] ,2 n - 2]

alors leur somme z = x + y appartient lintervalle z [0, 2

n-1

- 1] U [2

n-1

n-1 Dans le sous-intervalle [0, 2 -1], le rsultat appartient lensemble de dfinition, tandis que le sousn-1 n intervalle [2 , 2 -2] nappartient plus lensemble de dfinition des nombres positifs. n Le nombre z obtenu est bien dans le format n bits (car infrieur 2 ), mais sa valeur est interprte comme ngative, car le MSB vaut 1. Ainsi, alors que x et y sont positifs, leur somme est interprte comme ngative en C2. On en dduit la rgle de dtection du dbordement (dans le cas de laddition) :
Si les deux oprandes de laddition sont de mme signe, il y a dbordement quand le rsultat na pas le mme signe que les oprandes.

Le signe tant port par les MSB des nombres, cette dtection se fait en comparant uniquement ces bits. d) Soustraction La soustraction se ramne une simple addition en C2 (donc la rgle prcdente) : A-B quivaut A+(-B). par exemple : format 8 bits 01101010 - 00011011
IUT Cachan - GEii1

106 - 27

est quivalente

01101010 + 11100101 01001111

106 -27 79
JSR, rv.AP - 2003

11

6. Le code Binaire dcal (utilis parfois)


Le binaire dcal est un codage driv du complment deux. Il est utilis dans certaines applications o on veut pouvoir comparer facilement des entiers signs. Sa principale application est le codage de lexposant des nombres rels. Avec le tableau suivant, il est facile de comparer les codages en complment 2 et le binaire dcal (format 4 bits):
Valeur relative exprime en dcimal +7 +6 +5 +4 +3 +2 +1 0 -1 -2 -3 -4 -5 -6 -7 -8 valeur exprime en C2 0111 0110 0101 0100 0011 0010 0001 0000 1111 1110 1101 1100 1011 1010 1001 1000 quivalent dcimal du codage binaire 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 Valeur relative exprime en dcimal +7 +6 +5 +4 +3 +2 +1 0 -1 -2 -3 -4 -5 -6 -7 -8 Valeur exprime en binaire dcal 1111 1110 1101 1100 1011 1010 1001 1000 0111 0110 0101 0100 0011 0010 0001 0000 Equivalent dcimal du codage binaire 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

On observe que le codage en C2 est tel que les codes des nombres positifs sont plus petits que ceux des nombres ngatifs. Par contre, les codes binaire dcal des nombres positifs sont suprieurs aux codes des nombres ngatifs. Cette proprit du binaire dcal permet de comparer plus facilement les codes quand il faut comparer des nombres.
code binaire dcal complment deux 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 valeur -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7

Comme lquivalent dcimal du codage des positifs a t augment de 8, on dit que le code binaire est dcal.
IUT Cachan - GEii1

12

JSR, rv.AP - 2003

Le binaire dcal sobtient en ajoutant 2format-1 au nombre binaire en complment deux. Plus simplement encore, le binaire dcal est obtenu en inversant le bit de signe du complment deux. On peut, comme toujours, travailler en hexadcimal.

IUT Cachan - GEii1

13

JSR, rv.AP - 2003

III. Codage des nombres rels

( flottants )

Le codage des nombres rels est plus complexe que celui des entiers, mme signs. Il est vite fastidieux raliser la main ! Seul le principe est vraiment retenir : en particulier, la notion de signe / mantisse / exposant.

1. Codage en virgule fixe dun rel infrieur 1


Pour les nombres entiers, la conversion dune base en une autre passe par la technique des divisions successives. Quen est-il si lon veut exprimer un nombre rel infrieur 1 dans une autre base? Tout nombre admet un dveloppement polynomial. Si le nombre est infrieur 1, ce dveloppement fait intervenir les puissances inverses (ngatives) de la base. Soit :
base B = {0, 1, ...., B-1} avec B IN, B>1 IN et n>0 -1 -2 -3 -n X = a x B + a x B + a x B + ... +a x B 1 2 3 n

a vec a B, n i

Nous allons bien sr nous intresser la reprsentation binaire, ou mieux hexadcimale, dun nombre rel X <1 : X = a1 x 16-1 + a2 x 16-2 + a3 x 16-3 + ... + an x 16-n pour X<1

On peut alors crire X sous la forme dite en virgule fixe : X = ( a1 a2 a3 an )2 Calcul des coefficients ai : avec ce dveloppement on peut facilement montrer comment sobtiennent les coefficients ai. En effet, en multipliant X par 16 : X x 16 = a1 x 160 + a2 x 16-1 + a3 x 16-2 + +an x 16-n+1 alors le rel X x 16 scrit : a1

, a2

a3 an

criture dans laquelle a1 est la partie entire de X x 16.

En multipliant 0 a2 a3 an par 16, on pousse son tour a2 chez les entiers ; ainsi, par multiplications par 16 successives, on extrait les coefficients recherchs. Exemple : comment le nombre 0,63212 scrit-il en base 16, puis en base 2 ? Attention : il ne faut pas oublier que a i

{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}.
a1 = 10 = A a2 = 1 = 1 a3 = 13 = D etc...

0,63212 x 16 = 10,11392 0,11392 x 16 = 1,82272 0,82272 x 16 = 13,16352

Donc, sachant que chaque chiffre hexadcimal scrit sur 4 bits :


0,63212 = (A 1 D) = (1010 0001 1101) = (101000011101) 2 16 sur douze bits

Ce codage dun rel infrieur 1 en virgule fixe est utilis pour coder la mantisse des nombres rels dans les ordinateurs. Le passage par lhexadcimal sera, l encore, trs utile.

2. Nombres virgule flottante


On vient de voir que les nombres infrieurs 1 peuvent tre convertis en binaire en utilisant une somme des puissances inverses de 2 (format dit virgule fixe ). Mais cette mthode de conversion ne peut pas convenir pour reprsenter tous les nombres rels. Prenons par exemple le rel e =-1,602.10-19. En fait, 2-63< e < 2-62, ce qui veut dire que dans le mot binaire issu de la conversion en virgule fixe, il faut compter 62 zros droite de la virgule, avant de trouver le premier 1 significatif Cela pose un problme de format ! Cette petite remarque sur un cas concret introduit bien lide du codage des rels. En effet, il suffit de coder lexposant de la premire puissance de 2 significative (ici -63). Cela revient dplacer la virgule droite du premier bit significatif gal 1. Ainsi la virgule flotte selon le nombre rel coder ; cest pourquoi on parle de virgule flottante ou de nombres flottants .
IUT Cachan - GEii1

14

JSR, rv.AP - 2003

Une fois la virgule place droite du premier 1 significatif le nombre rel scrit alors : 1 a1 a2an. Cest lcriture dun nombre dont il est simple de calculer les coefficients par la mthode des multiplications successives (en hexadcimal, videmment).

B. Normalisation
La virgule flottante permet une infinit dcritures du mme nombre ; lexposant peut prendre nimporte quelle valeur entire. Exemple : -1.602 10 -19 = -16.02 10 -20 = -0.1602 10 -18

La reprsentation normalise correspond lexposant qui permet davoir en partie entire un seul chiffre diffrent de zro. En base 10, cela veut dire que la partie entire de lcriture normalise est un chiffre {1, 2, 3, 4, 5, 6, 7, 8, 9}. En binaire, cette partie entire vaut toujours 1. Cest cette criture binaire normalise qui est utilise dans les ordinateurs, et que nous allons voir maintenant en dtail.

C. Normalisation des rels en base 2


Pour coder en base 2 le nombre rel X (quelconque), X doit tre crit sous la forme impose par le format virgule flottante normalise : X = (-1) S

. 2E . (1+m)

Le codage en binaire du nombre rel X se ramne ensuite aux codages du bit de signe (S), de lexposant (E) et de la partie fractionnaire de la mantisse (m). Il existe plusieurs normalisations de codage selon le nombre de bits utilis pour coder lexposant et la mantisse. Les normes IEEE simple et double prcision sont les plus connues (utilises pour les types float et double du langage C).

Codage du signe S : avec la notation (-1)S, il est vident que S=0 si X0 et S=1 si X<0. codage de lexposant E : il se fait toujours en binaire dcal afin den simplifier la comparaison.

On peut trouver la valeur de E par comparaison avec les diffrentes puissances de 2. Mathmatiquement, E est le plus petit entier le plus proche de ln2 | X | (ln2 (x) est le logarithme en base 2 de x, cest--dire ln(x)/ln(2)). Codage de la mantisse m : par construction, m est un nombre rel infrieur 1 ; elle peut donc tre code en virgule fixe (cest--dire laide des coefficients de sa dcomposition en puissances ngatives de 2).

1. Codage IEEE simple prcision sur 32 bits


Voici le format du codage normalis sur 32 bits (4 octets), qui correspond au type float du langage C :

1 bit

8 bits

23 bits

S
exemples 1.0 -1.375 0.632121 0 NaN 0 1 0 0 1

Cod.Bin.Nat. de (exposant + 127)


011 011 011 000 111 1111 1111 1111 0000 1111 1 1 0 0 1 000 011 010 000 111 0000 0000 0001 0000 1111

mantisse
0000 0000 1101 0000 1111 0000 0000 0010 0000 1111 0000 0000 1010 0000 1111 0000 0000 1110 0000 1111 Code en Hexa 0x3F800000 0xBFB00000 0x3F21D2AE 0 NaN

Les deux derniers codages sont des exceptions permettant de coder le 0 et NaN (Not a Number), cest--dire un code qui reprsente une erreur de codage.
IUT Cachan - GEii1

15

JSR, rv.AP - 2003

La dynamique de codage des nombres rels va de 1.18 10-38 3.4 10+38.


Mais plus encore que la dynamique (assez large pour la plupart des applications !), cest la prcision relative des calculs qui dcoule de la taille de la mantisse et de lexposant : en simple prcision, elle est seulement de lordre de 10-6. Cest insuffisant pour beaucoup dapplications, do lintrt du codage sur 64 bits.

2. Codage IEEE double prcision sur 64 bits


Voici le format du codage normalis sur 64 bits (8 octets), qui correspond au type double du langage C :
1 bit 8 bits 23 bits

S
exemples 1.0 -0.6875

Cod.Bin.Nat. de (exposant + 1023)


011 1111 1111 011 1111 1110

mantisse
Code en Hexa 0x3FF0000000000000 0xBFE6000000000000

0 1

0000 0000 0000 0000 0000 0000 0000 0110 0000 0000 0000 0000 0000 0000

La dynamique de codage des nombres rels va de 2.23 10-308 1.8 10+308. Cest beaucoup ! Mais lintrt de la double prcision est surtout dans la prcision relative des calculs : elle est de lordre de 10-15.

3. codage prcision tendue 80 bits


Codage sur 80 bits (10 octets) :
1 bit

1 bit

13 bits

65 bits

exposant + 4095

mantisse

Pour ce codage, le bit 1 qui est la partie entire du nombre fractionnaire est prsent dans le code ; ceci simplifie le matriel des units de calcul. La dynamique de codage des nombres rels va de 3.4 10-4932 1.1 104932 .

IUT Cachan - GEii1

16

JSR, rv.AP - 2003

IV.

Autres codes binaires

Dans ce qui suit, il nest plus question de nombres, car les codes binaires prsents ont des usages diffrents, utile en lectronique plutt quen informatique. Bien sr, lhexadcimal sera utilis pour simplifier lcriture des mots binaires. Tous les codes binaires tudis sont dans un format fix. Cest dailleurs partir de cette ide de format que nous allons introduire la notion de code binaire. Considrons un format deux bits. Cela veut dire que lon limite le nombre de mots binaires diffrents 22= 4. La squence du binaire naturel pour ces quatre mots est la suivante : 00 01 10 11 Pour produire cette suite de mots de deux bits, on peut utiliser la rgle de composition du code binaire naturel, qui est lalternance des 0 et des 1 dans un nombre gal 2rang. En fait, les codes binaires, pour un format donn de n bits, se distinguent les uns des autres seulement par la squence des mots binaires : ils utilisent les mmes 2n combinaisons de bits possibles, mais les mots binaires ne se succdent pas dans le mme ordre. En produisant un code binaire, donc en choisissant une succession de mots binaires (squence) particulire, on veut obtenir de lui une ou des proprits qui vont tre exploites dans les systmes lectroniques de traitement de linformation.

A. Code BCD
BCD est issu de Binary Coded Decimal traduire par Dcimal Cod en Binaire et cela dit bien de quoi il sagit. On code directement chaque chiffre dun nombre crit en base dix avec son quivalent en binaire naturel. On ne fait pas la conversion du nombre, on fait le codage des chiffres ! Cest beaucoup plus simple et rapide. Voici la table de correspondance dcimal et BCD (assez vidente). 0 1 2 3 4 5 6 7 8 9 Par exemple : 1989 = (0001 1001 1000 1001)BCD 741 = (0111 0100 0001)BCD Ces deux exemples montent bien que chaque chiffre cod ncessite quatre bits. Un entier cod en BCD utilise donc plus de bits que le codage binaire naturel. Ce codage est trs simple. Il est particulirement utilis lors de laffichage sur des afficheurs 7 segments. Un problme qui se pose souvent est de passer du code binaire naturel dun nombre son codage BCD. Pour comprendre, il suffit de comparer les squences du binaire naturel et du BCD. Que se passe-t-il au voisinage de 10 par exemple ? dcimal 8 9 10 11 BCD 1000 1001 0000 0001 binaire pur 1000 1001 1010 1011 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001

0001 0001

En fait la squence BCD est identique celle du binaire pur jusqu 9. A dix, le BCD prend la valeur 0001 0000, qui vaut seize en dcimal. Donc quand un chiffre hexa du binaire pur est suprieur 9, on lui ajoute 6 pour obtenir le code BCD quivalent. Cette ide est exploite dans les calculateurs binaires qui travaillent directement avec les nombres
IUT Cachan - GEii1

17

JSR, rv.AP - 2003

cods BCD.

B. Code de Gray
Pour mieux mettre en vidence la proprit utile du code de Gray, reparlons du binaire naturel. Nous avons remarqu que dans la squence du binaire naturel, le passage de 1 0 sur un bit de rang i fait que le bit de rang suprieur i+1 change dtat. Il se trouve dans la squence du binaire naturel de nombreux cas o plusieurs bits changent dtat en mme temps. Par exemple, lors dun comptage sur 3 bits : 000 001 010 011 100 101 de cette ligne la suivante, deux bits changent dtat de cette ligne la suivante, les trois bits changent dtat

Dans certains dispositifs1, il est impossible de faire basculer deux bits simultanment. Dans dautres, il est important que tous les bits basculent exactement en mme temps (alors que cest physiquement difficile). Cette proprit du binaire naturel est donc un dfaut qui le rend inadapt certaines applications. La solution est le code de Gray, pour lequel un seul bit change lors du passage dun mot binaire au suivant. Voici la squence du code de Gray pour des mots de format 3 bits. 000 001 011 010 110 111 101 100 le trait horizontal sous le 1 reprsente une rflexion (au sens optique du terme), voir plus bas

Une mthode de gnration du code est de procder par rflexion : on voit sous le 1 soulign que le bit de faible poids reprend les mmes valeurs quau dessus de ce 1 soulign, comme si le trait tait la marque dune pliure ; en pliant selon ce trait, les 1 et 0 du LSB se superposent. On procde de mme sur les deux bits de faible poids quand on a compt les 4 premires combinaisons, et ainsi de suite Cest cause de cette mthode quon appelle aussi le code de Gray le "binaire rflchi" On vrifie que dune ligne la suivante dans la squence du code de Gray, il ny a quun seul bit qui change dtat. Dune manire gnrale, des mots binaires dont un seul bit diffre sont dits adjacents. Il faut remarquer que la premire et la dernire ligne de la squence sont aussi adjacentes. Cette notion de mots binaires adjacents est utilise par des techniques de simplification des quations logiques. Nous avons limit notre propos au code BCD et au code de Gray, frquemment rencontrs par llectronicien. Mais il existe un grand nombre de codes binaires, chacun ayant des proprits particulires.

1 Un cas typique est celui des codeurs de position monts sur les arbres de machines tournantes. Par principe, le code binaire est parcouru priodiquement. Un dispositif mcanique ou optique produit un signal lectrique sur plusieurs fils ; chaque fil correspond un bit du code binaire. Il est physiquement impossible de russir des changements d'tat simultans sur plusieurs bits; d'o l'intret du code de Gray.

IUT Cachan - GEii1

18

JSR, rv.AP - 2003

V. Conclusion
Ce document, un peu thorique, a introduit beaucoup de vocabulaire et a permis lexpos de quelques mthodes de travail. Le binaire est la base de llectronique numrique, mais cest lcriture hexadcimale qui est loutil le mieux adapt pour toutes les oprations raliser. Heureusement, le passage binairehexadcimal est simple et doit devenir vident tout lectronicien.

IUT Cachan - GEii1

19

JSR, rv.AP - 2003

VI.
1. Multiplication binaire
Voici la table de multiplication en binaire : produit 0x0= 0 0x1= 0 1x0= 0 1x1= 1

Annexes

Le principe de la multiplication de deux nombres entre eux est le mme quen dcimal. Pour le calcul la main la multiplication en binaire nest pas vraiment une bonne ide (cest si simple en dcimal). Ce dont on peut discuter cest plutt comment la machine peut sy prendre. L il y a une grande varit de possibilits nous allons en prsenter deux qui ont des applications pratiques importantes ce sont la mthode de Wallace et le recodage de Booth. a) Mthode de Wallace Soit les nombres au format 2 bits (b1 b0) et (a1 a0) dont on fait le produit : b1 x a1 a0 .b1 a1.b1 a1.b1 a1.b0 a1.b0 + a0.b1 a0.b0 b0 a0 a0.b0

Ce premier rsultat est obtenu matriellement grce une cellule de base (multiplieur 2x2). On va montrer maintenant que pour une multiplication de deux mots de 4 bits il suffit de disposer de quatre multiplieurs 2 x 2 : Soit deux mots de 4 bits multiplis entre eux :

b3 x a3 a0xb3 + + + a3xb3 a2xb3 a3xb2 a1xb3 a2xb2 a3xb1 a1xb3 + + a3xb3 a2xb3+a3xb2 a2xb2 a3xb1 a2xb1+a3xb0 a1xb2 a2xb1 a3xb0 a0xb3+a1xb2

b2 a2 a0xb2 a1xb1 a2xb0

b1 a1 a0xb1 a1xb0

b0 a0 a0xb0

a0xb2 a1xb1 a2xb0 a0xb1+a1xb0 a0xb0

Les trois dernires lignes sont organises pour faire apparatre les rsultats partiels des multiplications 2 x 2 bits. Il faut donc faire les 4 produits suivants : (b3 b2) x (a1 a0) (b3 b2) x (a3 a2) (b1 b0) x (a1 a0) (b1 b0) x(a3 a2) Puis il faut faire les additions des rsultats partiels de chaque rang.

IUT Cachan - GEii1

20

JSR, rv.AP - 2003

0 a0 a1 b0 b1 a0 a1 b2 b3 a2 a3 b0 b1 a2 a3 b2 b3 0 1 2 3 0 2 3 4 5 rin 0 0 0 1 2 3 rin

0 1 2 rout 3

0 1 2 3

2 3 4 5

rout 0 0 rin 1 2 3

4 5 6 7

0 1 2 rout 3

4 5 6 7

La ralisation du multiplieur X ncessite donc quatre multiplieurs 2x2 et trois additionneurs 4+4. On peut continuer ce type de dmonstration pour des multiplications de mots de format 8 bits et plus. Des circuits intgrs sont disponibles pour raliser des multiplicateurs selon cette technique. La multiplication se fait en parallle car tous les bits sont traits simultanment.

b) Multiplication des nombres binaires signs Voici trois multiplications de nombres signs, la premire entre deux positifs (+3 x +3) ne pose aucune difficults; par contre, que donne le produit dun nombre ngatif en complment deux par un positif (-3 x +3) et le produit de deux nombres ngatifs (-3 x -3) en complment deux?
011 x 011 x 101 011 x 101 101

quivalent :
000011 x 000011 000011 000110 000000 000000 000000 000000 001001 111101 x 000011 111101 111010 000000 000000 000000 000000 110111 111101 x 111101 111101 000000 110100 101000 010000 100000 001001

Les oprandes ont systmatiquement t amens au format du rsultat avec lextension de signe. Tous les calculs intermdiaires sont exprims dans le format fix. Ainsi la multiplication donne un rsultat correct.
IUT Cachan - GEii1

21

JSR, rv.AP - 2003

Ces techniques de calculs en parallle sont trs coteuses en matriel. On peut limit ce cot en utilisant des procds squentiels. Cest le cas de la mthode de Booth. c) Mthode de Booth Voici les conditions matrielles de la ralisation dun multiplieur qui utilise le codage de Booth. Cette mthode, trs utilise dans les ordinateurs, permet de faire les multiplications des nombres en complment deux.

dcalage
P A

LSB -1

booth B

A et B sont les nombres multiplier. La multiplication se fait en srie; cest dire, que pour chaque bit (LSB) de A, on value comment utiliser B dans le rsultat que lon forme dans P; la valeur du prcdent LSB est temporairement conserve LSB-1 car il participe la prise de dcision. On passe au bit suivant de A en pratiquant un dcalage vers la droite de lensemble (PA). Quand tous les bits de A ont t traits le rsultat est dans la paire PA. Au cours du dcalage, le bit MSB de P est conserv (extension du bit de signe). Les rgles sont les suivantes : LSB 0 0 1 1 LSB-1 0 1 0 1 opration additionner 0 additionner B soustraire B additionner 0

Afin de justifier ces rgles, notons que la multiplication se faisant bit bit (du multiplicateur), on peut procder lanalyse pas pas en progressant de mme. Posons que dans B se trouve un nombre x. Dans A se trouve le multiplicateur A=a n-1 a n-2 a 1 a 0

La multiplication se fait en binaire sign en complment deux. Au premier pas, cest a x qui est calcul. 0 Dtaillons : a rsultat 0 0 0 1 -x Attention, dans ce cas a est lunique bit (connu) du multiplicateur mais il est aussi le bit de signe! 0 Passons a , cette fois nous devons reconsidrer les rsultats de la multiplication afin de tenir compte des valeurs 1 possible de a . Voici alors le tableau des solutions; cette fois on montre comment corriger les calculs faits prcdemment 1 :

IUT Cachan - GEii1

22

JSR, rv.AP - 2003

rsultat 0 x -2x -x

0 0 1 1

0 1 0 1

rsultat prcdent 0 -x 0 -x

correction 0 +2x -2x 0

Quand a = 0, il faut revoir le rsultat prcdent car le nombre nest plus ngatif comme on lavait suppos. Il faut 1 donc ajouter 2x afin de retrouver x. Le dcalage dans PA, qui a eu lieu entre le traitement de a et celui de a , 0 1 correspond cette multiplication par deux de x. Ainsi +2x revient, ce niveau, additionner le contenu de B. Dans le cas o a = 1, le nombre A (pour ce que lon en connat) est ngatif, donc les rsultats sont -2x ou bien -x; 1 do les corrections proposes dans le tableau. Ici aussi -2x revient soustraire B. On retrouve ainsi les rgles proposes initialement.

2. Arithmtique des nombres flottants


Les oprations arithmtiques sur les flottants exigent de faire un travail sur les exposants et sur les mantisses. a) Addition et soustraction Les deux nombres additionner doivent avoir le mme exposant. Il est donc (ventuellement) ncessaire de modifier le codage dun des oprandes afin de le ramener au mme exposant que lautre oprande. Cette premire opration consiste donc dnormaliser un des oprandes. Le codage des flottants nadmettant pas le codage de la partie entire, il faut dnormaliser le plus petit et recalculer sa mantisse. Cest le plus grand qui impose la prcision du calcul. La diffrence des deux exposants (le plus grand moins le plus petit) indique le nombre de dcalages droite que doit subir la mantisse du plus petit des deux nombres. Attention ne pas oublier la partie entire gale 1 et qui est introduite dans la mantisse au premier dcalage. Laddition binaire des mantisses peut alors avoir lieu. Par principe cette addition peut produire une partie entire 2. Si le rsultat est suprieur 1 alors il faut le renormaliser en dcalant droite la mantisse dun bit et en ajoutant 1 lexposant. Par contre si la partie entire est nulle et que la mantisse nest pas nulle il faut simultanment dcaler gauche dun bit et diminuer lexposant de 1. Il faut rpter cette opration jusqu ce que la partie entire soit gale 1. Pour la soustraction il faut utiliser le mme algorithme et faire laddition du diminuende avec le complment 2 du diminuteur. Il faut grer correctement les problmes de dbordement. Le format pour la mantisse du rsultat est celui de la mantisse des oprandes augment de deux bits. b) Multiplication Le calcul des exposants se fait par laddition. Mais attention au codage en binaire dcal des exposants. Les mantisses sont multiplies sachant que le produit est infrieur 4. La renormalisation du rsultat peut donc tre ncessaire.

IUT Cachan - GEii1

23

JSR, rv.AP - 2003

Vous aimerez peut-être aussi