27
ver 1.0 Chapitre 1: Systèmes de numérotation, codes binaires et arithmétique- 1/27 Chapitre 1 Systèmes de numérotation, codes binaires et arithmétique Introduction : Tous les circuits numériques (inclus microprocesseurs et microcontrôleurs) traitent des données. Cependant, toutes les données traitées par ces circuits doivent être sous une forme binaire. Par exemple, les données basées sur des caractères sont stockées sous forme de codes binaires. Ainsi, le code ASCII pour la lettre « A » est en binaire « 1000001 ». Les données numériques peuvent également être stockées sous forme de caractères, mais il est plus efficace de stocker les données numériques sous forme de codes binaires. Comme les humains sont généralement habitués au système de numération décimal, il est important pour les ordinateurs de permettre l’entrée et l’affichage (sortie) de données décimales. En interne, les données seront traitées sous forme binaire; ainsi, l'ordinateur doit convertir décimal binaire puis binaire décimal avant la sortie. Comme le signe négatif ne peut être attaché à un nombre sous forme binaire, la conversion des nombres signés nécessite un traitement supplémentaire. En outre, les données sont stockées et traitées sur des systèmes informatiques en groupes de 8 bits appelés octets (ou byte en anglais). Chaque octet est constitué d'une partie supérieure et une partie inférieure, appelée «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. Représentations binaires des nombres et arithmétique : Dans cette section on définit comment les nombres sont représentés dans les systèmes digitaux avec différents formats et comment les opérations arithmétiques sont réalisées dans les microprocesseurs/microcontrôleurs. 1.1. Les systèmes de numération Un système de numération est un code pondéré qui se définit par deux éléments: a. La base « b » du système, b. Les symboles du système. Les systèmes de numération les plus utilisés sont les suivants: Système base Symboles Nombre de symboles Décimal 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 Hexadécimal 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 utilisés pour écrire un nombre = −1 1 0

Chapitre 1 - Systemes de Numerotation

Embed Size (px)

Citation preview

  • 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.