-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 1/27
Chapitre 1
Systmes de numrotation, codes binaires et arithmtique
Introduction :
Tous les circuits numriques (inclus microprocesseurs et
microcontrleurs) traitent des donnes.
Cependant, toutes les donnes traites par ces circuits doivent
tre sous une forme binaire. Par exemple,
les donnes bases sur des caractres sont stockes sous forme de
codes binaires. Ainsi, le code ASCII
pour la lettre A est en binaire 1000001 . Les donnes numriques
peuvent galement tre stockes
sous forme de caractres, mais il est plus efficace de stocker
les donnes numriques sous forme de codes
binaires.
Comme les humains sont gnralement habitus au systme de numration
dcimal, il est important pour
les ordinateurs de permettre lentre et laffichage (sortie) de
donnes dcimales. En interne, les donnes seront traites sous forme
binaire; ainsi, l'ordinateur doit convertir dcimal binaire puis
binaire dcimal avant la sortie. Comme le signe ngatif ne peut tre
attach un nombre sous forme binaire, la
conversion des nombres signs ncessite un traitement
supplmentaire.
En outre, les donnes sont stockes et traites sur des systmes
informatiques en groupes de 8 bits appels
octets (ou byte en anglais). Chaque octet est constitu d'une
partie suprieure et une partie infrieure,
appele quartet ou nibble , de quatre bits chacune. Un mot (word)
est un groupe d'un certain
nombre de bits binaires. Un mot peut tre de 4 bits, 5 bits, 8
bits, 16 bits ou 32 bits.
1. Reprsentations binaires des nombres et arithmtique :
Dans cette section on dfinit comment les nombres sont reprsents
dans les systmes digitaux avec
diffrents formats et comment les oprations arithmtiques sont
ralises dans les
microprocesseurs/microcontrleurs.
1.1. Les systmes de numration
Un systme de numration est un code pondr qui se dfinit par deux
lments:
a. La base b du systme,
b. Les symboles du systme.
Les systmes de numration les plus utiliss sont les suivants:
Systme base Symboles Nombre de symboles
Dcimal 10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 10
Binaire 2 0, 1 2
Octal 8 0, 1, 2, 3, 4, 5, 6, 7 8
Hexadcimal 16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
16
Table : 1.1
En base , on utilise chiffres. Notons la suite des chiffres
utiliss pour crire un nombre
= 1 10
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 2/27
0 est le chiffre des units.
- En dcimal = 10, {0,1, 2, 3, 4, 5, 6, 7, 8, 9} ;
- En binaire, = 2, {0, 1}: 2 chiffres binaires, ou bits ;
- En hexadcimal, = 16, {0,1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D,
E, F} (On utilise les 6 premires lettres de lalphabet comme des
chiffres : A reprsente 10, B reprsente 11, , F reprsente 15).
1.2. Reprsentation positionnelle des nombres entiers (et passage
de la base la base )
En base 10, on crit par exemple 1996 pour reprsenter le
nombre
1996 = 1 103 + 9 102 + 9 101 + 6 100
Dans le cas gnral, en base , le nombre reprsent par une suite de
chiffres
1 10
est donn par lexpansion en puissance suivante:
1 10 =
=0
eq. [1]
0 est le chiffre de poids faible, et le chiffre de poids
fort.
De manire similaire en base 2 :
(101)2 = 1 22 + 0 21 + 1 20 = 4 + 0 + 1 = 5
La notation ( 123 ) (ou aussi 123 ) indique que le nombre 123
est crit en base .
Autres exemples :
1 = (19017)10 en dcimal,
avec: 4 = 1, 3 = 9, 2 = 0, 1 = 1, 0 = 7
On remarque que les sont tous infrieurs la base = 10.
2 = (1011101)2 en binaire,
avec: 6 = 1, 5 = 0, 4 = 1, 3 = 1, 2 = 1, 1 = 0, 0 = 1
Passage en base 10 en utilisant leq. [1] :
2 = (1011101)2 = 1 26 + 0 25 + 1 24 + 1 23 + 1 22 + 0 21 + 1 20
= (93)10
3 = (130)8 en Octal,
avec: 2 = 1, 1 = 3, 0 = 0
Passage en base 10 en utilisant leq. [1] :
3 = (130)8 = 1 82 + 3 81 + 0 80 = (88)10
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 3/27
4 = (920)16 = (920) = 0920 en Hexadcimal,
avec: 3 = , 2 = 9, 1 = 2, 0 = 0 Passage en base 10 en utilisant
leq. 1 :
4 = (920) = 163 + 9 162 + 2 161 + 0 160 = (43296)10
5 = (18095)8
La notation 5 = (18095)8 nest pas correcte, car tous les
chiffres doivent tre infrieurs 8 ce qui nest pas le cas pour le 2me
chiffre et aussi pour le 4me (a1= 9 > 8) et (a3= 8).
Remarque :
On note que lexpansion en puissance peut tre utilise pour
convertir dans nimporte quelle base :
Base 10 vers base 3 :
14710 = 1 (101)2 + (11) (101)1 + (21) (1010)0
Base 10 vers base 2 :
14710 = 1 (1010)2 + (100) (1010)1 + (111) (1010)0
Ceci nest pas commode de faire la main, cependant il est
facilement ralis sur un ordinateur.
1.2.1. Reprsentation des nombres fractionnaires
Les nombres fractionnaires sont ceux qui comportent des chiffres
aprs la virgule.
Dans le systme dcimal, on crit par exemple :
12,346 = 1 101 + 2 100 + 3 101 + 4 102 + 6 103
En gnral, en base b, on crit :
1 10, 1 2 =
+ 1 1 + + 0
0 + 1 1 + 2
2 +
+ =
=0
+
=1
eq. [2]
Par exemple en base 8:
147.3 8 = 1 82 + 4 81 + 7 80 + 3 81 = 64 + 32 + 7 + 0.375 =
103.37510
1.3. Passage de la base 10 la base 2, 8, 16
Pour exprimer en binaire, un nombre exprim dans une base , on
utilise la mthode de divisions successives .
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 4/27
1.3.1. Conversion par division successives des nombres entiers
dcimaux
Soit un nombre entier exprim dans la base 10. Pour lexprimer
dans une autre base , il suffit deffectuer des divisions
successives par jusqu lobtention dun rsultat nul.
En effet, lquivalent en base b dun entier dcimal X peut tre
reprsent par :
= ( 1 10) = + 1
1 + + 22 + 1
1 + 0
Si on divise par , le reste est 0 :
=
1 + 12 + + 2
1 + 1 = 1 avec reste 0
puis on divise 0 par
1
= 2 + 1
3 + + 31 + 2 = 2 avec reste 1
puis on divise 1 par
2
= 3 + 1
4 + + 41 + 3 = 3 avec reste 2
Ce processus ce rpte jusqu trouver (+1 sera alors 0). Noter que
le reste obtenu aprs chaque division est un des bits recherch. Le
bit le moins signifiant (ou LSB : Least Significant Bit) 0 est
obtenu en premier lieu.
En rsum lalgorithme de conversion par division successives est
le suivant:
Soient : : un nombre entier exprim dans la base = 10.
: le rsultat de la division : .
: le reste de la division : +1.
1) Effectuer la 1re division ( = 1)
= 1 0
Si 1 = 0 alors aller 3) sinon aller 2)
2) Effectuer la division :
1
= 1
Si = 0 (par exemple aprs + 1 divisions) alors aller 3) sinon
rpter 2)
3) Arrter la division. Le rsultat est ()10 = (1 10)
Exemples :
o Passage de la base 10 la base 2 :
Soit le nombre X = (115)10, convertir ce nombre en binaire:
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 5/27
Figure : 1.1
Soit le nombre X = 5310, convertir ce nombre en binaire:
o Passage de la base 10 la base 8 :
Le passage de la base 10 la base 8 seffectue de la mme
manire.
Soit le nombre X = (125)10, convertir ce nombre en Octal :
Pour cela, on va effectuer les divisions successives de X sur 8.
Les restes de ces divisions vont constituer
les chiffres de X exprim en Octal.
Figure : 1.2
X = (115)10 = (1110011)2 0
X = (175)8
6
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 6/27
o -Passage de la base 10 la base 16 :
Soit le nombre X = (2596)10, convertir ce nombre en Hexadcimal
:
Figure : 1.3
1.3.2. Conversion par multiplication successives des fractions
dcimales
La conversion dune fraction dcimale en base b peut se faire par
multiplication successive par b.
En effet, lquivalent en base b dune fraction dcimale peut tre
reprsent par :
= (, 1 2 ) = 11 + 2
2 + +
Si on multiplie par , on obtient :
= 1 + 21 + +
+1 = 1 + 1
O 1 reprsente la partie fractionnaire du rsultat et 1 sa partie
entire.
On multiplie 1 par , on obtient :
1 = 2 + 31 + +
+2 = 2 + 2
Ensuite :
2 = 3 + 41 + +
+3 = 3 + 3
Ce processus se continue jusqu ce quon obtient une partie
fractionnaire nulle, ou jusqu ce que le nombre de digit
fractionnaire soit suffisant. Noter que la partie entire obtenue
aprs chaque
multiplication est un des bits recherch. Le bit le plus
signifiant (ou MSB : Most Significant Bit) de la
partie fractionnaire 1 est obtenu en premier lieu.
Exemples :
o Convertir (0.625)10 la base 2 :
Y = (24)
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 7/27
Comme on la dj mentionn, ce processus ne se termine pas toujours
: le rsultat serait alors une fraction qui se rpte
o Convertir 0.710 la base 2 :
Par suite:
0.710 = 0.1 0110 . . .2
1.4. Passage entre 2 bases (diffrentes de 10) :
Pour convertir un nombre dune base 1 une base 2 , il est plus
facile de passer par une base intermdiaire qui est la base 10.
Exemple :
o Soit le nombre = (175)8 = (? )2
a. Passage de loctal la base 10
Y = (175)8 = 1 82 + 7 81 + 5 80 = (125)10
b. Passage du dcimal au binaire
= (125)10 = (1111101)2
Conclusion
= (175)8 = (1111101)2
o Convertir 231.34 la base 7 :
a. Passage de la base 4 la base 10
Y = 231.34 = 2 42 + 3 41 + 1 40 + 3 41 = 45.7510
Le processus commence se rpter parce que 0.4 a t obtenu
avant
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 8/27
b. Passage du dcimal la base 7
Parsuite:
231.34 = 45.7510 = 63.5151 7
On note cependant lorsquune base est une puissance dune autre
base, le passage de lune lautre
devient trs facile et ne ncessite pas une base intermdiaire.
Ainsi, le passage de la base 8 = 23 ou 16 = 24 la base 2 peut
seffectuer sans passer par la base 10.
1.4.1. Passage de loctal au binaire (et inversement) :
La base 8 est une puissance de la base 2. Pour convertir un
nombre octal en binaire, on possde comme suit:
On a 8 = 23 cela veut dire que pour reprsenter un seul chiffre
octal en binaire, il faut utiliser 3 bits. Ainsi, la reprsentation
des chiffres de la base 8 en binaire est la suivante:
Chiffre octal Chiffre binaire quivalent (sur 3 bits)
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
Table : 1.2
Exemple : Soit le nombre = (175)8 = (? )2
Pour trouver lquivalent binaire de ce nombre octal, il suffit de
trouver lquivalent binaire de chaque chiffre octal.
Octal 1 7 5
Binaire 0 0 1 1 1 1 1 0 1
= (175)8 = (1111101)2
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 9/27
Et inversement
Soit le nombre binaire = (1111101)2 = (? )8
Pour trouver lquivalent octal de ce nombre binaire, il suffit de
regrouper les bits du nombre binaire en groupes de 3 bits en
partant de la droite. Si le dernier groupe ne contient pas trois
bits, ajoutez des
zros. Ainsi, trouver lquivalent octal de chaque groupe de 3
bits
Binaire 0 0 1 1 1 1 1 0 1
Octal 1 7 5
= (1111101)2 = (175)8
1.4.2. Passage de lhexadcimal au binaire (et inversement) :
La base 16 est une puissance de la base 2. Pour convertir un
nombre hexadcimal en binaire, on possde comme suit:
On a 16 = 24 cela veut dire que pour reprsenter un seul chiffre
hexadcimal en binaire, il faut utiliser 4 bits. Ainsi, la
reprsentation des chiffres de la base 16 en binaire est la suivante
:
Chiffre hexadcimal Chiffre binaire quivalent (sur 4 bits)
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111
Table : 1.3
Exemple : Soit le nombre = (A24)h = (? )2
Pour trouver lquivalent binaire de ce nombre hexadcimal, il
suffit de trouver lquivalent binaire de chaque chiffre
hexadcimal.
Hexa A 2 4
Binaire 1 0 1 0 0 0 1 0 0 1 0 0
= (A24)h = (101000100100)2
Et inversement
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 10/27
Soit le nombre binaire = (101000100100)2 = (? )h
Pour trouver lquivalent hexadcimal de ce nombre binaire, il
suffit de regrouper les bits du nombre binaire en groupes de 4 bits
en partant de la droite. Si le dernier groupe ne contient pas trois
bits, ajoutez
des zros. Ainsi, trouver lquivalent hexadcimal de chaque groupe
de 4 bits
Binaire 1 0 1 0 0 0 1 0 0 1 0 0
Hexa A 2 4
= (101000100100)2 = (A24)h
Exercices supplmentaires sur la base hexadcimale:
1.5. Arithmtique binaire :
Les oprations arithmtiques dans les systmes numriques sont
gnralement effectus en binaire parce
que la conception des circuits logiques pour effectuer des
oprations arithmtiques binaires est beaucoup
plus facile que pour dcimal.
Larithmtique binaire est effectue de la mme manire que
dcimale
1.5.1. Addition binaire :
La table daddition des digits binaires est la suivante:
0 + 0 = 0
0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 et une retenue (carry) de 1 pour
la colonne suivante
Une retenue de 1 pour la colonne suivante est quivalente
l'addition de 1 cette colonne.
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 11/27
Exemple :
1.5.2. Soustraction binaire :
La table de soustraction des digits binaires est la
suivante:
0 0 = 0
0 1 = 1 et un emprunt (borrow) de 1 de la colonne suivante 1 0 =
1 1 1 = 0
Un emprunt de 1 de la colonne suivante est quivalent soustraire
1 cette colonne.
Exemples, effectuer en binaire 2910 1910, 1610 310, 5710
1110
1.5.3. Multiplication binaire :
La table de multiplication des digits binaires est la
suivante:
0 0 = 0
0 1 = 0 1 0 = 0 1 1 = 1
Exemple : effectuer en binaire 1310 1110,
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 12/27
1.5.4. Division binaire :
La division binaire est similaire la division dcimale, sauf
qu'elle est beaucoup plus facile parce que
les deux chiffres de quotient possibles sont 0 et 1.
Lexemple suivant illustre la division de 14510 par 1110 en
binaire :
14510 1110 = 1310 2
1 0 0 1 0 0 0 1 1011
1 0 1 1 1101
1 1 1 0
1 0 1 1
0 0 1 1 0 1
1 0 1 1
1 0
1.6. Reprsentations binaires des entiers relatifs (nombres
signs) :
Jusqu' prsent, tous les nombres prsents ont t des nombres
positifs. Ceci n'est pas le cas dans la vie
relle. Le systme dcimal utilise une paire de symboles pour
indiquer la polarit. Le signe + indique
un nombre positif et le signe - indique que le nombre est
ngatif. Le nombre zro est toujours considr
comme un nombre positif. Pour cette raison, les nombres ngatifs
peuvent tre dfinis comme un nombre
quelconque infrieur zro, et les nombres positifs sont les
nombres qui ne sont pas ngatifs.
Ce symbole supplmentaire ( + ou - ) occupe un autre digit
(position) dans le nombre. Si les
nombres sont tous positifs, le symbole + est rarement utilis. Si
aucun signe ne figure en dcimale,
le nombre est suppos tre un nombre positif.
Le systme de numration binaire n'a pas le luxe d'tre en mesure
d'utiliser d'autres symboles pour
indiquer le signe (autre que 0 et 1). En effet, les circuits
numriques ne peuvent reprsenter que des 1 et
des 0, par consquent, les nombres signs doivent en quelque sorte
utiliser ces symboles pour reprsenter
le signe d'un nombre.
Il existe plusieurs mthodes utilises pour intgrer des nombres
signs (relatifs) dans le systme de
numrotation binaire. Ces mthodes utilisent un seul bit pour
indiquer le signe. Le bit de signe est le bit
le plus gauche ou le plus significatif (MSB : Most Significant
Bit), semblable au symbole signe
utilis en dcimal. En binaire, le symbole "1" indique un nombre
ngatif et le symbole "0" indique
Diviseur
Quotient
Reste
Dividende
Dividende
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 13/27
un nombre positif . Comme il ne peut pas y avoir des bits vides
dans un nombre binaire, tous les
nombres signs doivent avoir un 1 ou un 0 dans la position du bit
le plus significatif pour indiquer ngatif
ou positif.
Comme on la dj mentionn, plusieurs reprsentations binaires des
entiers relatifs sont couramment utilises, en particulier dans les
convertisseurs analogiques numriques. On peut citer:
- Complment 2,
- Complment 1,
- Signe, valeur absolue,
Pour illustrer ces diverses reprsentations on donne un exemple
sur 4 bits (table 1.4).
Entiers relatifs Signe plus
valeur absolue Complment 1 Complment 2
+7 0111 0111 0111
+6 0110 0110 0110
+5 0101 0101 0101
+4 0100 0100 0100
+3 0011 0011 0011
+2 0010 0010 0010
+1 0001 0001 0001
0 0000 0000 ---
0 1000 1111 0000
-1 1001 1110 1111
-2 1010 1101 1110
-3 1011 1100 1101
-4 1100 1011 1100
-5 1101 1010 1011
-6 1110 1001 1010
-7 1111 1000 1001
-8 --- --- 1000
Table : 1.4
Remarque importante:
Pour la reprsentation des nombres signs dans nimporte quelle
forme doit toujours spcifier sur combien de bits est effectue cette
reprsentation. Dans le tableau prcdent la reprsentation tait sur
4
bits (1 quartet).
1.6.1. Signe - valeur absolue :
Quand un nombre binaire sign est reprsent en signe-valeur
absolue , le MSB est le bit de signe, et
les bits restants sont les bits damplitude en valeur absolue.
Les bits de valeur absolue sont en binaire pur (non complment) pour
les nombres positifs et ngatifs.
Par exemple, le nombre dcimal +25 est exprim comme nombre sign
sur 8-bits signe-valeur
absolue par
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 14/27
Le nombre dcimal -25 est exprim par
10011001
Noter que la seule diffrence entre +25 et -25 est le bit de
signe.
1.6.2. Complment 1 :
Les nombres positifs en complment 1 sont reprsents de la mme
faon que signe-valeur absolue .
Les nombres ngatifs sont reprsent par le complment 1 du nombre
positif correspondant :
Complment 1 on inverse chaque digit (0 1 et 10)
Par exemple, en utilisant 8 bits, le nombre dcimal -25 est
exprim comme le complment 1 de +25
(00011001) :
+2510 = (00011001)2 2510 = (11100110)2
1.6.3. Complment 2 :
La reprsentation des nombres signs utilise dans la plupart des
microprocesseurs et circuits numriques
est la reprsentation binaire en complment deux . Cette
reprsentation est utilise pour les
calculs arithmtiques signs et le stockage des donnes signes.
L'avantage de lutilisation du complment 2 est observ dans les
oprations arithmtiques effectues par un
microprocesseur/microcontrleur. Tous les microprocesseurs ont
besoin deffectuer les quatre oprations arithmtiques de base :
addition, soustraction, multiplication et division. Ces
oprations
arithmtiques sont effectues dans un
microprocesseur/microcontrleur par une unit arithmtique et
logique (ALU), qui est essentiellement un additionneur binaire
intelligent.
Par exemple, la multiplication est tout simplement une addition
rpte. Le problme de multiplication
3 4 peut tre ralis en ajoutant 4 + 4 + 4 pour aboutir la bonne
rponse, 12. La soustraction en complment 2 peut tre effectue par un
additionneur si le signe du second nombre est chang avant
l'opration d'addition. Par exemple, 5 2 = 5 + (2) = 3. Ainsi, en
complment 2, la soustraction est tout simplement un cas particulier
de l'addition. Comme la
division est une soustraction rpte, elle peut galement tre
effectue dans un additionneur binaire.
1.6.3.1. Ngation en complment 2
Tous les nombres ngatifs dans la reprsentation en complment 2
peuvent tre drivs de leurs
quivalents positifs. La ngation est le processus de calcul de
l'quivalent ngatif d'un nombre. La
ngation en complment 2 est effectue de la manire suivante :
a. On crit lquivalent positif du nombre avec un nombre appropri
et bien dfini de bits (avec un zro dans le MSB reprsentant le bit
de signe),
b. On inverse tous les bits (cest le complment 1 )
c. On additionne 1.
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 15/27
Lopration dinversion de tous les bits est dsigne en tant que
complment 1 . La figure suivante illustre l'application de cette
mthode pour obtenir la ngation en complment 2 du nombre positif
5.
(On travaille ici sur 8 bits)
0 0 0 0 0 1 0 1 +5
1 1 1 1 1 0 1 0 Complment 1
+ 1 Ajouter 1
1 1 1 1 1 0 1 1 Complment deux (-5)
Ngation en complment 2 sur 8 bits
Un autre grand avantage de la reprsentation en complment 2 est
quelle est rversible. On peut appliquer le procd pour lobtention du
complment 2 n'importe quel nombre positif pour trouver l'quivalent
ngatif et un n'importe quel nombre ngatif (reprsent en complment 2)
pour trouver
lquivalent positif. La figure suivante illustre cette
rversibilit.
0 1 0 0 0 1 1 1 +71
1 0 1 1 1 0 0 0 Complment 1
+ 1 Ajouter 1
1 0 1 1 1 0 0 1 Complment deux (-71)
1 0 1 1 1 0 0 1 -71
0 1 0 0 0 1 1 0 Complment 1
+ 1 Ajouter 1
0 1 0 0 0 1 1 1 Complment deux (+71)
Rversibilit de la reprsentation en complment 2 sur 8 bits
1.6.3.2. Raccourci pour la ngation en complment 2 :
L'opration de ngation en complment 2 ncessite deux tapes. Un
raccourci existe et produit le mme
rsultat, mais seulement ncessite une seule tape. Ce procd
consiste commencer par le nombre
binaire original (positif ou ngatif). On copie tous les chiffres
partir de la droite jusqu' et y compris le
premier digit "1". Puis, on inverser les bits restants. La
figure suivante illustre la faon dont cela
fonctionne sur deux nombres de 8 bits.
(a) (b)
Figure 1.4: Raccourci pour la ngation en complment 2
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 16/27
1.6.4. Description formelle de la reprsentation en complment 2
:
Soit un entier relatif avec || . Sa reprsentation binaire en
complment 2 sur N bits est constitue de la suite de bits bi:
12 10
La relation entre et les valeurs des bits est la suivante :
Pour positif, la reprsentation en complment 2 de correspond la
reprsentation binaire pure sur N bits, c'est--dire une
reprsentation pondre en base 2 sans considrer le signe :
1
10
0 2 avec 0N
i
i Ni
x x b b
Pour x ngatif, la reprsentation y en complment 2 de x est la
reprsentation binaire pure sur N bits du complment 2N de |x| :
0 2Nx y x
Dans tous les cas on peut crire la relation suivante qui permet
dobtenir la valeur dcimale des nombres signe en complment 2 :
i2N
0i
i1N
1N 2bb2x
(2)
Le bit de poids le plus fort vaut 0 pour les entiers positifs et
1 pour les entiers ngatifs.
Exemples rcapitulatifs :
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 17/27
1.6.5. Valeurs extrmes (dynamique)
Les valeurs extrmes reprsentables en complment 2 sur N bits
sont:
1
1
max 2 1
min 2
N
N
x
x
Par exemples
avec N=4 bits on peut reprsenter des nombres en complment 2
allant de 23 = 8 23 1 = +7
avec N=8 bits on peut reprsenter de -128 +127.
Avec N=16 bits on peut reprsenter de -32768 +32767.
1.7. Oprations arithmtiques avec les nombres signs en complment
2:
1.7.1. Addition en complment 2
L'addition de nombres binaires signs N-bits est simple l'aide du
complment 2.
L'addition est effectue avec un additionneur binaire comme si
tous les chiffres ont t positifs, et tout
report (carry) de la position de signe est ignor. Ceci toujours
donne un rsultat correct sauf si un
dbordement (overflow) se produit.
Lorsque la longueur des nombres est N bits, nous disons qu'un
dbordement a eu lieu, si la reprsentation
correcte de la somme (avec signe) ncessite plus que N bits.
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 18/27
Les diffrents cas qui peuvent se produire sont illustrs
ci-dessous pour = 4. (Dynamique [-8, +7[ )
a. Addition de deux nombres positifs, [8, +7[
+3 0 0 1 1
+4 0 1 0 0
+7 0 1 1 1 rsultat correct
b. Addition de deux nombres positifs, [8, +7[
+5 0 1 0 1
+6 0 1 1 0
+11 1 0 1 1 rsultat incorrect
Rsultat incorrect cause de loverflow: +11 demande 5 bits pour
tre reprsente, le bit de signe inclus.
c. Addition de deux nombres, un positif, un ngatif avec | | >
| |
+5 0 1 0 1
- 6 1 0 1 0
- 1 1 1 1 1 rsultat correct
d. Addition de deux nombres, un positif, un ngatif avec | | <
| |
- 5 1 0 1 1
+6 0 1 1 0
+1 (1) 0 0 0 1 rsultat correct
Le rsultat est correct quand on ignore le retenu (carry) du bit
de signe. (Ceci nest pas un overflow).
e. Addition de deux nombres ngatifs avec [8, +7[
- 3 1 1 0 1
- 4 1 1 0 0
- 7 (1) 1 0 0 1 rsultat correct
Le rsultat est correct quand on ignore le retenu (carry) du bit
de signe. (Ceci nest pas un overflow).
f. Addition de deux nombres ngatifs avec [8, +7[
- 5 1 0 1 1
- 6 1 0 1 0
- 11 (1) 0 1 0 1 rsultat incorrect
Rsultat incorrect cause de loverflow: -11 demande 5 bits pour
tre reprsente, le bit de signe inclus.
Notez que l'tat de dbordement (cas b et f) est facile dtecter,
car dans le cas b l'addition de deux
nombres positifs donne un rsultat ngatif (sur 4 bits), et dans
le cas f, l'addition de deux nombres ngatifs
donne une rponse positive (sur 4 bits).
1.7.2. Soustraction en complment 2
La soustraction est un cas particulier de laddition.
Par exemple soustraire (+6) de (+9) est quivalent ajouter (-6)
(+9).
La soustraction est essentiellement le changement du signe du
soustracteur (diminuteur) et son addition
au nombre soustraire (diminuende).
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 19/27
Le changement de signe dun nombre binaire positif ou ngatif est
obtenu en prenant son complment 2.
Pour soustraire deux nombres signs, prendre le complment 2 du
soustracteur et additionner. Ignorer
tout retenu du bit de signe.
Exemples pour = 8 :
Comme pour laddition on peut avoir des dbordements si le rsultat
obtenu dpasse la dynamique de la reprsentation. Pour N=8 bits, la
dynamique est de -128 +127.
1.8. Binaire cod dcimal : code BCD
Le binaire cod dcimal (BCD) est un moyen de codage dun chiffre
dcimal unique (0 9) sur un code binaire de 4-bits. Il est rarement
utilis sur les ordinateurs et circuits numriques parce que les
nombres
BCD sont trs inefficaces. Seulement 10 des 16 codes possibles
sont utiliss dans chaque quartet de 4-
bit ce qui gaspille les capacits de stockage et de traitement.
Les codes BCD sont prsents dans la table
suivante :
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 20/27
Chiffre dcimal Code BCD
0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9
1001
1.8.1. Conversion dcimaleBCD
Pour exprimer un nombre dcimal en BCD, il suffit de remplacer
chaque digit par le code binaire 4-bit
correspondant, par exemple :
1.8.2. Conversion BCD dcimale
Il est galement facile de dterminer le nombre dcimal dun nombre
BCD. On commence droite et on partitionne le nombre binaire en
quartets (groupe de quatre bits). Ensuite on crit le digit
dcimal
correspondent chaque quartet :
1.8.3. Arithmtique BCD
Un autre inconvnient du code BCD est quil ncessite galement des
ajustements aprs les oprations arithmtiques utilisant ladditionneur
binaire. L'additionneur binaire va produire les valeurs suprieures
9 sur un quartet de 4 bits qui sont des rsultats BCD invalides.
Prenons l'exemple de la figure suivante
quand on additionne 3 et 9, le rsultat devrait tre de 12.
Cependant sur 8-bit ladditionneur binaire donne (0) et pas 12.
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 21/27
(a) (b)
(c)
Figure 1.5
La figure 1.5.b illustre pourquoi ceci se produit. Il y a six
nombre inutiliss dans la reprsentation BCD
sur 4 bits. Ces nombres doivent tre sauts chaque fois quil est
ncessaire lors dune addition. Cette correction sappelle correction
BCD ou decimal adjust .
Pour raliser la correction BCD aprs une addition BCD effectue
dans un additionneur binaire, on
doit se poser les deux questions suivantes :
o Question 1: Le rsultat est suprieur 9?
o Question 2: ce rsultat a-t-il provoqu un retenu (carry)?
Si la rponse une de ces deux questions est oui, alors un
ajustement dcimal doit tre fait sur le rsultat
binaire obtenu. Lajustement se fait en ajoutant 6 au rsultat
binaire d'origine, comme le montre la figure suivante :
(a) (b) Figure 1.6 : correction BCD
Dans la sous-figure 1.6(a), le rsultat de l'additionneur binaire
est (6). Comme ()est suprieur 9, la rgle 1 s'applique, et 6 doit
tre ajouts (6) pour obtenir le bon rsultat de 71 en BCD. Dans la
sous-figure 1.6(b), l'additionneur binaire donne (80) avec un
retenu (carry) du premier quartet (4 bits) au quartet de gauche. La
rgle 2 s'applique, donc 6 doit tre ajout (80)pour obtenir le bon
rsultat 86 en BCD. La figure 1.7 prsente un autre exemple de
laddition des nombres BCD : 01100111 et 01010011.
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 22/27
Figure 1.7 : Autre exemple de correction BCD
2. Le code Gray
Le code Gray nest pas pondr et il nest pas un code arithmtique.
La proprit importante du code gray est quil prsente un seul
changement de bit dun code au suivant dans la squence. Cette
proprit est trs importante dans plusieurs applications, comme par
exemple dans le cas des codeurs rotatifs.
La table suivante liste le code Gray sur 4 bits avec ses
quivalents binaires et dcimal. Le code Gray
peut avoir nimporte quel nombre de bits. Remarquer quun seul bit
change entre les codes Gray successifs.
2.1. Conversion binaire Gray
Les rgles suivantes expliquent comment convertir dun nombre
binaire un code Gray :
1. Le MSB en code Gray est le mme que le MSB du nombre binaire
correspondant.
2. En allant de gauche droite, ajouter chaque paire adjacente du
nombre binaire pour obtenir le bit suivant du code Gray. Ignorer
les retenus.
Par exemple la conversion du nombre binaire 10110 en code Gray
se fait de la manire suivante :
Le code Gray est 11101
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 23/27
2.2. Conversion Gray binaire
Les rgles suivantes expliquent comment convertir dun code Gray
un nombre binaire:
1. Le MSB du code binaire est le mme que le MSB du code Gray
correspondant.
2. En allant de gauche droite, ajouter chaque bit binaire gnr au
bit suivant du code Gray. Ignorer les retenus.
Par exemple la conversion du code Gray11011 en nombre binaire se
fait de la manire suivante :
Le nombre binaire est 10010.
Exemple supplmentaires sur 8 bits :
2.3. Exemple dapplication du code Gray
Un codeur d'arbre (codeur rotatif) est une application typique
du code Gray. Trois metteur/dtecteurs
IR (infrarouge) sont utiliss pour coder la position de
l'arbre.
Squence binaire Squence en code Gray
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 24/27
Le codeur utilis gauche est binaire et peut avoir trois bits qui
changent ensemble, crant ainsi un risque
d'erreur de lecture ventuel.
Le codeur droite utilise le code Gray et ainsi permet le
changement de 1 bit uniquement entre les codes
successifs, liminant ainsi les erreurs potentielles.
3. Codes Alphanumriques : le code ASCII
Les Codes Alphanumriques n'ont aucune proprit arithmtique
directe. Ils servent reprsenter des
"caractres" (chiffres, lettres....). Un standard est le code
ASCII (American Standard Code For
Information Interchange). Il permet de reprsenter en 7 (ou 8)
bits toutes les touches d'une machine
crire (e.g. clavier), y compris des touches "commandes " tels
que les CTRL... et ALT...., "Pomme" sur
les Macintosh.
Les 32 premiers codes dans la version de base sur 7 bits sont
utiliss comme caractres de contrle pour
reprsenter, par exemple, une fin de ligne ou une tabulation, un
arrt transmission, la touche Escape, etc.
Codes ASCII de base sur 7 bits
Le code nest pas tout fait quelconque:
1) chiffres de 0 9 : Le quartet bas est gal la valeur binaire du
chiffre. Le quartet haut est 0011 (3
hexa). Exemple le caractre "7" donne le code ASCII 37 hexa (0011
0111 binaire). On peut ainsi facilement passer du code ASCII du
chiffre sa valeur numrique et vice versa.
2) Lettres : Les codes sont placs par ordre croissant, dans le
mme ordre que l'alphabet, pour faciliter les classements (il suffit
de comparer les codes ASCII). Exemple: A, B, C, D. donnent 40, 41,
42,
43... (hexa).
3) Utilisation : Ne pas confondre le code binaire du 9 (09 hexa)
et celui du caractre "9" (39 hexa) !!!
On se sert des codes ASCII pour
o Lcriture d'un langage (assembleur ou volu), ou d'un texte
quelconque.
o La transmission vers une imprimante, vers un cran de
visualisation (ce sont de anciennes applications)
o les stockages sur disques.
4) Traitement de texte et diteur de Texte
o Editeur de texte (ex. : NotePad.exe sur les PC) Ecriture de
simples caractres ASCII, (espace et saut de ligne compris) aucune
autre mise en page, aucun style de caractres (gras, italique )
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 25/27
Code ASCII de base sur 7 bits
o Traitement de texte (ex. : MS Word) Permet toutes les mises en
page possibles, avec tableaux, images Le fichier contient les
caractres de texte, mais un grand nombre dautres octets de mise en
page et dinformation.
o Editeur Hexadcimal (exemple : Hexedit.exe pour PC) : permet de
lire les octets dun fichier quelconque en Hexadcimal. Si les octets
correspondent par moment des caractres ASCII,
ceux-ci sont affichs en clair (dans une colonne de droite
gnralement)
Le code ASCII de base sur 7 bits a t mis au point pour la langue
anglaise, il ne contient donc pas de
caractres accentus, ni de caractres spcifiques une langue. Pour
coder ce type de caractre il faut
recourir un autre code. Le code ASCII a donc t tendu 8 bits (un
octet) par IBM pour pouvoir
coder plus de caractres (on parle d'ailleurs de code ASCII
tendu...). Les 128 premiers caractres
correspondent au code ASCII de base sur 7 bits, les 128 suivants
correspondent aux caractres accentus
et caractres spciaux : Caractres du latin non anglais, symboles
de monnaies, lettre grecques, symboles
mathmatiques, caractres de dessin, etc.
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 26/27
Code ASCII tendu
-
ver 1.0
Chapitre 1: Systmes de numrotation, codes binaires et
arithmtique- 27/27
Code ASCII tendu
4. Notation numrique:
Les ordinateurs et circuits numriques nutilisent pas le systme
dcimal comme leur systme principale, mais plutt utiliser le systme
binaire. Par consquent, il est logique que les multiplicateurs
soient des
puissances de 2.
Le nombre de combinaisons possibles sur huit bits est : 28 =
256.
Le nombre de combinaisons possibles sur 16-bits est de 216 =
65536.
La notation frquemment utilise est de grouper des puissances
entires de 2 qui sont des multiples de
10 (soit, 210, 220, etc.).
Les 65536 combinaisons sur 16 bits peuvent alors tre crit comme
216 = 26 210 = 64 210.
Il est trs commun en pratique de remplacer les puissances de 2
qui sont des multiples de 10 avec une
seule lettre, comme le montre la table suivante :
Dcimal Notation
1,024 ()
1,048,576 ()
1,073,741,824 ()
1,099,511,627,776 ()
Ainsi, 1 mga-octet (Mo) ou 1 MBytes (1 MB) est 220 octets.
64 Mo fait 64 220 octets = 67108864 octets.