UNIVERSITE Joseph FOURIER, Grenoble
U.F.R. d’ Informatique et Maths. Appliqu´ees
Repr´esentation des nombres en machine
Sacha Krakowiak
Nous consid´erons un emplacement de m´emoire de nbits num´erot´es, par convention, de 0 `a n1 de
droite `a gauche. Un tel emplacement peut contenir 2nvaleurs distinctes de l’information. Repr´esenter
dans cet emplacement une donn´ee d’un certain type (nombre entier, nombre fractionnaire, chaˆıne de
caract`eres, etc.), c’est :
1. d´efinir parmi les valeurs possibles que peut prendre cette donn´ee un sous-ensemble d’au plus 2n
valeurs distinctes,
2. d´efinir une correspondance entre ces valeurs, dites repr´esentables, et les 2nconfigurations pos-
sibles des nbits de l’emplacement,
3. d´efinir l’effet, sur la repr´esentation choisie, des op´erations associ´ees au type consid´er´e.
Dans cette note, nous ´etudions la repr´esentation des nombres entiers et d’une certaine classe de
nombres r´eels repr´esentables par des fractions. En ce qui concerne les op´erations sur ces nombres, nous
nous limitons `a l’addition et `a la multiplication par une puissance de 2. Cela nous permet d’introduire
les notions de report et de d´ebordement.
Les sections dont le titre est marqu´e d’un ast´erisque ne font pas partie du programme et peuvent
ˆetre lues `a titre de compl´ement.
1 Repr´esentation des entiers positifs
1.1 Repr´esentation en base 2
Nous choisissons de repr´esenter les 2nvaleurs {0, 1,. . ., 2n1}. Un entier aappartenant `a cet
ensemble poss`ede une repr´esentation en base 2 de la forme :
a=an12n1+an22n2+· · · +a121+a020(1)
Par convention, le nombre aest repr´esent´e par la suite de bits (an1, an2, . . . , a0). Le coefficient
du bit ai, soit 2i, est aussi appel´e son poids.
La table 1 donne la repr´esentation de quelques valeurs particuli`eres.
Nombres positifs
0 0 0 . . . 0 0
1 0 0 . . . 0 1
2n11 0 . . . 0 0
2n1 1 1 . . . 1 1
Tab. 1 – Repr´esentation des entiers positifs
1.2 Repr´esentation en base 2p
Soit un entier arepr´esent´e en base 2 par la suite (an1, an2, . . . , a0). Sa repr´esentation en base
2pd´ecoule imm´ediatement de la formule 1, dans laquelle on met en facteur les puissances successives
croissantes de 2p. On obtient donc cette repr´esentation en d´ecoupant la suite (an1, an2, . . . , a0) en
c
Equipe enseignement UE INF241 ALM - 19 juin 2007 1
tranches de pbits `a partir de la droite (la derni`ere tranche ´etant compl´et´ee par des 0 si elle est
incompl`ete, c’est-`a-dire si nn’est pas multiple de p). Chacune des tranches ainsi obtenues est la
repr´esentation en base 2 d’un chiffre de la repr´esentation de aen base 2p.
Les valeurs usuelles de psont 3 (num´eration en base 8, ou octale) et 4 (num´eration en base 16, ou
hexad´ecimale)
Les chiffres octaux sont not´es : 0, 1, 2, 3, 4, 5, 6, 7. Les chiffres hexad´ecimaux sont not´es : 0, 1, 2,
3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F (les lettres A,. . ., F peuvent aussi ˆetre ´ecrites en minuscules).
Exemple.
Soit `a repr´esenter 491 sur 10 bits :
en binaire : 0 1 1 1 1 0 1 0 1 1
en octal : 0 0 0 1 1 1 1 0 1 0 1 1
0 7 5 3
en hexad´ecimal : 0 0 0 1 1 1 1 0 1 0 1 1
1 E B
L’int´erˆet des repr´esentations octale et hexad´ecimale est de permettre une notation plus condens´ee
que la repr´esentation binaire. Par exemple, les 256 valeurs possibles d’un octet (8 bits) se repr´esentent
au moyen de deux chiffres hexad´ecimaux (00, 01, . . ., FE, FF).
1.3 Op´erations
Nous associons au type entier positif les op´erations binaires suivantes : addition, soustraction,
multiplication, division, ainsi que la comparaison (op´eration dont le r´esultat appartient `a l’ensemble
{<, , >, ,=,6=}).
Il est important de noter que les op´erations arithm´etiques que nous consid´erons ne sont pas iden-
tiques aux op´erations usuelles de mˆeme nom : nos op´erations n’ont de sens que si les valeurs des
op´erandes et du r´esultat appartiennent `a l’ensemble des valeurs repr´esentables, soit {0, 1, . . ., 2n1}.
Nous n’examinons en d´etail que l’op´eration d’addition.
Rappelons au pr´ealable les r`egles de l’addition sur les bits. Cette op´eration est commutative et
associative. En ajoutant deux bits xet y, on obtient une somme set une retenue r, ce que l’on r´esume
par la formule : (s, r)xy. On r´ealise ainsi ce qu’on appelle un demi-additionneur (Table 2).
x y s r
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
On a : x+y=s+ 2r,s=xxor y,r=xand y
Tab. 2 – Demi-additionneur sur 1 bit
En ´etendant cette op´eration `a trois bits x,y,z, on obtient un additionneur complet, qui r´ealise
(s, r)xyz(Table 3).
Soit maintenant `a faire la somme de deux entiers positifs aet brepr´esenes par les suites
(an1, an2, . . . , a0) et (bn1, bn2, . . . , b0). Remarquons que la somme a+bpeut ˆetre sup´erieure `a
2n1 et n’est donc pas n´ecessairement repr´esentable. Soit s= (a+b)mod 2n(partie repr´esentable
de la somme), et soit (sn1, sn2, . . . , s0) la repr´esentation de s. On obtient les si`a partir des aiet bi
par l’algorithme classique de l’addition. On note rila retenue prise en compte au rang i(la retenue
initiale r0est nulle et riest engendr´ee au rang i1 pour i > 0) :
Autrement dit, on effectue la somme bit `a bit de droite `a gauche en reportant les retenues
c
Equipe enseignement UE INF241 ALM - 19 juin 2007 2
x y z s r
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
On a : x+y+z=s+ 2r
Exercice : exprimer set ren fonction de x, y, z
Tab. 3 – Additionneur sur 1 bit
r00 ; i0 ;
while (i < n){
(si, ri+1)aibiri;
ii+ 1 ;
}
´eventuelles1.
La derni`ere retenue rn, engendr´ee au rang n1, est appel´ee report (en anglais carry) de l’op´eration
d’addition de aet b. On a, d’apr`es la d´efinition de la retenue :
a+b=s+rn2n(2)
La condition pour que la somme a+bsoit repr´esent´ee par sest donc rn= 0. Si rn= 1, alors le esultat
de l’addition ne peut ˆetre repr´esent´e sur nbits : on dit qu’il y a ebordement (en anglais overflow).
Le nombre repr´esene par (sn1, sn2, . . . , s0) est alors ´egal `a a+b2net non `a a+b.
En pratique, le r´esultat de l’op´eration d’addition est un ensemble de deux ´el´ements :
la suite (sn1, sn2, . . . , s0) (nbits)
le report rn(1 bit).
Dans les processeurs, la valeur du report figure en g´en´eral sous le nom de bit Cdans le “code de
condition”, mis `a jour automatiquement apr`es l’ex´ecution de certaines instructions. Le d´ebordement
dans l’addition des entiers positifs2est donc signal´e par C= 1.
Dans ce qui suit, nous appelons convention standard la convention d’interpr´etation des nbits
d’un emplacement comme la valeur d’un entier positif de l’ensemble {0, 1,. . ., 2n1}, et op´erations
standard les op´erations arithm´etiques sur les entiers ainsi repr´esent´es. La convention standard est
couramment utilis´ee pour indiquer la valeur du contenu d’un emplacement de m´emoire ; cette valeur
est g´en´eralement not´ee en hexad´ecimal pour condenser l’´ecriture.
2 Repr´esentation des entiers relatifs
Il existe plusieurs conventions pour la repr´esentation des entiers relatifs.
2.1 Valeur absolue et signe (VAS)
Dans la repr´esentation par valeur absolue et signe, le bit de rang n1 est utilis´e pour repr´esenter
le signe du nombre (0 pour un nombre positif, 1 pour un nombre n´egatif). Les n1 bits restants
1cette formulation de l’algorithme ne sert qu’`a exprimer son principe ; dans la r´ealisation pratique, diff´erentes opti-
misations r´eduisent le nombre d’op´erations.
2On verra plus loin (3.1) qu’il n’en est pas ainsi dans le cas des entiers relatifs, o`u le d´ebordement est signal´e par un
bit distinct V.
c
Equipe enseignement UE INF241 ALM - 19 juin 2007 3
repr´esentent la valeur absolue selon la convention standard. Cette valeur absolue peut donc prendre
les valeurs {0, 1,. . ., 2n11}.
Avec la convention VAS, la suite de bits (an1, an2, . . . , a0) repr´esente un entier adont la valeur
est donn´ee par :
a= (1 2an1)(an22n2+an32n3+· · · +a121+a020) (3)
Cette expression a l’inconv´enient de ne pas ˆetre lin´eaire par rapport aux ai. En cons´equence,
les op´erations arithm´etiques sur les entiers repr´esent´es en VAS n’ont pas de relation simple avec les
op´erations standard sur les entiers positifs repr´esenes par la mˆeme suite (ai). La repr´esentation VAS
n’est donc pas couramment utilis´ee. On la trouve dans certaines formes de repr´esentation des nombres
r´eels.
La table 4 donne quelques valeurs particuli`eres.
VAS
z´ero (positif) 0 0 0 0 . . . 0 0
z´ero (n´egatif) 0 1 0 0 . . . 0 0
1 1 0 0 . . . 0 1
valeur minimale (2n11) 1 1 1 . . . 1 1
valeur maximale 2n11 0 1 1 . . . 1 1
Tab. 4 – Repr´esentation en valeur absolue et signe
On notera que le nombre 0 a une double repr´esentation.
2.2 Compl´ement `a 2 (C2)
Dans la repr´esentation en compl´ement `a 2 (C2), de loin la plus courante, les entiers positifs 0, 1,
. . ., 2n11 sont repr´esent´es selon la convention standard ; les entiers n´egatifs 2n1,2n1+ 1, . . .,
1 sont respectivement remplac´es par les entiers 2n1, 2n1+ 1, . . ., 2n1, eux-mˆemes repr´esenes
selon la convention standard. Autrement dit, un nombre n´egatif aest repr´esene par 2n− |a|.
Le bit an1indique le signe du nombre (1 pour les nombres strictement n´egatifs, 0 autrement). En
effet, les nombres n´egatifs sont repr´esenes par des nombres sup´erieurs ou ´egaux `a 2n1, qui est le poids
du bit an1dans la convention standard. En d´esignant par std(a) la valeur obtenue en interpr´etant
en convention standard la suite de bits qui repr´esente aen C2, on a :
std(a) = an12n+a(4)
Avec la convention C2, la suite de bits (an1, an2, . . . , a0) repr´esente un entier adont la valeur
est donn´ee par :
a=an12n1+an22n2+· · · +a121+a020(5)
On le v´erifie ais´ement en rempla¸cant le coefficient de an1,2n1,par 2n+ 2n1.
Nous verrons en 3.1 que la formule 5 permet de repr´esenter les op´erations arithm´etiques sur
le nombre relatif apar les op´erations standard correspondantes. C’est le principal int´erˆet de la
repr´esentation C2.
Nous examinons maintenant quelques propri´et´es importantes de cette repr´esentation.
2.2.1 Valeurs repr´esent´ees
Les valeurs repr´esenees sont 2n1, . . . , 1,0,1, . . . , 2n11. Il y a 2nvaleurs distinctes (pas de
double repr´esentation) ; la plage des valeurs repr´esent´ees n’est pas sym´etrique par rapport `a 0. La
table 5 indique quelques valeurs particuli`eres :
c
Equipe enseignement UE INF241 ALM - 19 juin 2007 4
C2
0 0 0 0 . . . 0 0
1 1 1 1 . . . 1 1
valeur minimale (2n1) 1 0 0 . . . 0 0
valeur maximale 2n11 0 1 1 . . . 1 1
Tab. 5 – Repr´esentation en compl´ement `a 2
2.2.2 Nombres oppos´es
Pour passer de la repr´esentation de a`a celle de a, on remarque3que std(a) = 2nstd(a) =
(2n1std(a)) + 1. Pour passer de a`a a, on doit donc inverser tous les bits de a(0 devenant 1 et 1
devenant 0), ce qui correspond `a une compl´ementation par rapport `a 2n1 (1 partout en convention
standard), puis ajouter 1 au nombre ainsi obtenu.
Cet algorithme s’exprime par la r`egle suivante : soit aile premier bit ´egal `a 1 `a partir de la droite ;
inverser tous les bits situ´es `a gauche de ai. Il faut que a6=2n1, car 2n1n’est pas repr´esentable.
Exemple.
Soit `a repr´esenter 10 sur 6 bits.
+10 0 0 1 0 1 0
bits invers´es bits conserv´es
10 1 1 0 1 1 0
2.2.3 Extension
Connaissant la repr´esentation d’un nombre asur nbits, on souhaite obtenir sa repr´esentation sur
n+kbits (k > 0).
On a : 1 = 2k2k1− · · · − 20, d’o`u : 2n1= 2n+k12n+k2− · · · − 2n1,
R´e´ecrivons la formule 5 en rempla¸cant 2n1, coefficient de an1, par l’expression ci-dessus.
a=an12n+k1+an12n+k2+· · · +an12n1+an22n2+· · · +a121+a020
On en d´eduit l’algorithme d’extension :
1. Cadrer le nombre `a droite sur n+kbits.
2. Recopier son bit de signe dans les positions n+k1, n +k2, . . . , n.
Exemple
Extension de 6 `a 10 bits.
7 0001110000000111
7 1110011111111001
2.3 Compl´ement `a 1 (C1)*
Dans la repr´esentation en compl´ement `a 1, les entiers positifs {0, 1,. . ., 2n11}sont repr´esent´es
selon la convention standard ; les entiers n´egatifs 2n1, . . . , 1,0 sont respectivement repr´esenes par
2n1,2n1+ 1, . . . , 2n2,2n1. Autrement dit, un nombre n´egatif aest repr´esene par 2n1− |a|
en convention standard. La repr´esentation d’un nombre n´egatif en C1 s’obtient donc `a partir de sa
repr´esentation en C2 par soustraction (standard) de 1.
3consid´erer s´epar´ement les cas a0 et a < 0.
c
Equipe enseignement UE INF241 ALM - 19 juin 2007 5
1 / 10 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !