Chapitre I : Les systèmes de numération I.1 La représentation polynomiale Nous manipulons les nombres la plupart du temps dans la base décimale, naturelle et universelle. Mais cela ne doit pas masquer la nature même de la numération qui peut prendre plusieurs formes, parmi lesquelles on trouve la représentation polynomiale. La représentation polynomiale d’un nombre est sa représentation sous la forme suivante : an−1bn−1+an−2bn−2+an−3bn−3+···+a2b2+a1b+a0+a−1b−1+ a−2b−2 +···+a−mb−m i=n N= ∑ ai × bi où ai ϵ {0, 1, 2, 3,4,………., (b-1)} i= 0 Le système de numération se définit par deux éléments : - La base du système ; - Les symboles du système : Le nombre de symboles utilisés caractérise le numéro de la base. Si la base 10 nous est familière, d’autres bases existent en informatique sont les bases 10, 2, 8 et 16 appelées respectivement « décimale », « binaire », « octale » et « hexadécimale ». Système décimale binaire octale hexadécimale Base Symboles 10 2 8 16 0, 1, 2, 3, 4, 5, 6, 7, 8,9 0, 1 0, 1, 2, 3, 4, 5, 6,7 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F Nombre de symboles 10 2 8 16 I.2 Rang et poids d’un chiffre Soit le nombre N exprimé dans une base b comme suit : N= (an an-1………….a0)b On appelle rang d’un chiffre sa position i dans le nombre à partir de la droite. Ainsi : - Le rang du chiffre an est n - Le rang du chiffre a1 est 1 - Le rang du chiffre a0 est 0 On appelle poids d’un chiffre le nombre bi tel que b b est la base et i le rang du chiffre, ainsi : - Le poids du chiffre an est bn ; - Le poids du chiffre a1 est b1 ; - Le poids du chiffre a0 est b0. I.3 Valeur décimale d’un nombre N de base b quelconque : La valeur décimale d’un nombre N de base b s’obtient par sa forme polynomiale Exemple : 1- Déterminer la valeur décimale de N= 101101 Nous aurons : (101101)2 =1×25+ 0×24 + 1×23 + 1×22 + 0×21 + 1×20 = 1× 32 + 0×16 +1×8 +1×4+ 0×2 + 1×1 = 32 + 8 + 4 + 1 = (45)10 2- Déterminer la valeur décimale du nombre octal (base 8) : N=(6734)8 1 Nous aurons : (6734)8 = 6× 83 + 7×82 + 3×81 + 4×80 = 6×512 + 7×64 + 3×8 + 4×1 = 3072 + 448 + 24 + 4 = (3458)10 3- Déterminer la valeur décimale du nombre hexadécimale (base 16) N = (A732)16 Nous aurons : (A732)16 = A×163 + 7×162 + 3×161 + 2×160 = 10× 4096 + 7× 256 + 3×16 + 2×1 = 40960 + 1792 + 48 + 2 = (42802)10 I.4 Changement de base : Pour le passage de la base 10 vers une base quelconque, on dispose de deux méthodes : - Par soustractions successives ; - Par divisions successives. I.4.1 Premier procédé de conversion Dans ce premier algorithme on applique directement la formule : i=n N= ∑ ai × bi où ai ϵ {0, 1, 2, 3,4,………., (b-1)}, i entier ≥ 0 : l’exposant de b du chiffre de poids fort i= 0 On dresse une table donnant les différentes puissances entières de la base b du système de numération dans lequel on veut convertir le nombre décimal. Au nombre décimal donné, on retranche la plus grande puissance entière de b possible. Cette puissance définit le rang du chiffre dans la représentation en base b du nombre. Le nombre de fois (< b) qu’on retranche cette puissance définit le chiffre de ce rang. ( en binaire, on ne peut avoir que 0 ou 1, la valeur du chiffre à écrire est donc immédiate). Exemple : 1- Convertir le nombre N =(39487)10 en nombre octal 39487 - 32768 85 i 8i 06719 0 1 - 4096 84 1 8 2623 2 64 512 83 3 512 2111 4 4096 3 - 512 8 5 32768 1599 512 83 1087 512 83 575 512 83 063 56 7×81 07 7×80 Donc : N =(39487)10 = 1× 85 + 1×84 + 5×83+ 7×81 + 7×80 On voit donc que le terme 82 est absent, d’où a2=0 d’après notre relation On a donc ; N =(39487)10 = (115077)8 2 2- Convertir N=(233)2 en binaire {exp N= (47375)} Comme précédemment dressons une table de puissances 233 128 27 105 64 26 41 32 25 09 8 23 1 1 20 0 i 0 1 2 3 4 5 6 7 2i 1 2 4 8 16 32 64 128 N=(233)10 = 27 + 26 + 25 + 23 + 20 on voit que les termes 21, 22, 24 sont absents nous en concluons donc que a1 = a2 = a4 =0 Donc N=(233)10 = (11101001)2 I.4.2 Deuxième procédé de conversion Cette méthode est plus simple et plus rapide que la précédente. Soit N un nombre exprimé en base 10, pour l’exprimer dans une autre base b, il suffit d’effectuer des divisions successives sur b jusqu’à l’obtention d’un résultat nul. On écrit ensuite tous les restes à partir de la fin et de gauche à droite, en les convertissant en lettres s’il y a lieu. Exemple : 1- Convertir le nombre N= (189520)10 en hexadécimal. 189520 16 29 135 11845 16 072 064 740 16 80 05 100 46 16 00 4 14 2 16 2 0 (2 E 4 5 0)16 donc, N= (189520)10 = (2 E 4 5 0)16 2- Convertrir N= (231)10 en binaire I.4.3 Nombres fractionnaires : Un nombre fractionnaire est composé de deux parties : - une partie entière ; - une partie fractionnaire ou décimale (à ne pas confondre avec le système décimal). Exemples : 213 , 56 Partie entière Partie décimale Peut se décomposer sous la forme : 2×102 + 1×101 + 3×100 + 5×10-1 + 6×10-2 3 a- Passage de la base b à la base 10 : Soit le nombre N =(1101,01)2, on va l’exprimer en décimal : La partie entière 1101 = 1×23 + 1×22 + 0×21 + 1×20 = 8+4+0+1 = 13. La partie fractionnaire 01 = 0×2-1 + 1× 2-2 = 0 + ¼ = 0,25 Conclusion : N =(1101,01)2 = (13,25)10 b- Passage de la base 10 à une base b : La conversion d’un nombre fractionnaire décimal à une autre base b se déroule en deux étapes : Etape 1 : convertir la partie entière par divisions successives ; Etape 2 : convertir la partie fractionnaire par multiplications successives. Exemple : (20,4)10 = (?)2 Partie entière : 20 2 0 10 0 2 5 1 2 2 0 2 1 1 2 0 Prendre les chiffres dans le sens de la flèche du bas vers le haut. Partie fractionnaire : Pour la partie fractionnaire on multiplie par 2 (résultat nul ou selon la précision demandée) 0 0,4 × 2 0,8 1 0,8 ×2 1,6 1 0,6 ×2 1,2 0 0,2 ×2 0,4 Prendre les chiffres dans le sens de la flèche du haut vers le bas. Le résultat est donc (20,4)10 = 10100,0110. Exemple : 0,7(10) = ?(2) 0,7 × 2 = 1,4 partie entière = 1(10) ou 1(2) 0,4 × 2 = 0,8 partie entière = 0(2) 0,8 × 2 = 1,6 partie entière = 1(2) 4 0,6 × 2 = 1,2 partie entière = 1(2) 0,2 × 2 = 0,4 partie entière = 0(2) d’où 0,7(10)= 0 , 1 0 1 1 0 0 1 1 0 0 1 1 0 · · · (2) I.4.4 Passage d’une base p à une base q (p,q = 2,8, 16) : Pour convertir un nombre octal en binaire, il faut passer par une base intermédiaire qui est la base 10. Exemple : Soit N = (175)8 = (…)2 1- Passage de l’octal à la base 10 : (175)8 = 1×82+7×81 +5×80 = (125)10 2- Passage du décimal au binaire Par divisions successives sur 2, on aboutit au résultat suivant : N = (1111101)2 Ainsi, le passage des bases 8 ou 16 vers la base 2 peut s’effectuer sans passer par le système décimal. Hexadécimal Décimal Octal Binaire 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 A 10 B 11 C 12 D 13 E 14 F 15 Conversion entre les bases binaire et octale 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Chaque groupe de trois bits d’un nombre binaire correspond à un chiffre du nombre octal correspondant. Conversion entre les bases binaire et hexadécimale 5 Chaque groupe de quatre bits d’un nombre binaire correspond à un chiffre du nombre hexadécimal correspondant. a- Conversion d’une base 2n vers base 2 Chaque symbole de la base B = 2n peut être représenté par n éléments binaires. Exemple (3A9)16 = (0011 1010 1001)2 = (001 110 101 001)= (1651)8 (742,5)8 = (111 100 010,101)2 = (0001 1110 0010, 0101)=(1E2,5)16 27,56(8) = ?(2) b- Conversion d’une base 2 vers base 2n Il suffit de regrouper les eléments binaires par paquets de n elements binaires. Exemple : (1011011)2 = (001 011 011)2 = (133)8 1 3 3 = (0101 1011)2 = (5B)16 5 B 1011101,1001111(2) = ?(8) 101010, 011 (2) = ?(16) 1A2,B(16) = ?(8) I.5 Codes : Parmi la variété de codes possibles, le code BCD 8421 détient la première place. C'est la raison pour laquelle il est souvent appelé code BCD dans la littérature technique. Outre le code 8421, nous pouvons citer les codes décimaux connus : le code 2421, le code plus 3 (code excess 3) ou encore le code Aiken. On distingue deux sortes de codes : les codes «pondérés» et les codes «non pondérés». I.5.1 Codes pondérés 6 a- Code binaire naturel b-Codes décimaux codés binaires (BCD) La façon la plus simple de représenter les 10 chiffres décimaux par 4 variables binaires est de prendre les 10 premières combinaisons des 4 variables du système binaire naturel. • Les combinaisons supérieures à 9 sont interdites Le fait d'affecter des poids aux variables binaires nous conduit à appeler le code obtenu "code pondéré". Remarques : Un code est dit «pondérés» quand il existe des nombres qui indiquent le poids des chiffres binaires. En multipliant ces nombres par les chiffres binaires correspondants, on obtient l'équivalence décimale. c- Code Aiken Le code Aiken étant fréquemment utilisé dans les automatismes industriels, il est par conséquent nécessaire de le convertir aux interfaces en code 8421 et inversement. Avec le code 2421 nous ne pouvons pas représenter une valeur supérieure à 9 avec 4 bits ; voyons pourquoi et comment nous représentons les chiffres de 0 à 9. 7 I.5.2 Codes non pondérés a- Code binaire réfléchi ou code Gray On établit un code de départ : zéro est codé 0 et un est codé 1. Puis, à chaque fois qu'on a besoin d'un bit supplémentaire, on symétrise les nombres déjà obtenus (comme une réflexion dans un miroir) et on rajoute un 1 au début des nouveaux nombres (4) et un zéro sur les anciens. Ci-dessous nous recommençons l'expérience pour les nombres (0)10 à (7)10. 8 b-Code plus 3 (Excess 3) Le code plus 3 ou code excess 3 appelé aussi code STIBIZ du nom de son inventeur est un code non pondéré issu du code 8421 auquel on ajoute systématiquement 3 à chaque chiffre. c-Le code ASCII L’un des codes les plus connus des utilisateurs de PC est le code ASCII (American Standard Code for Information Interchange). Il a été défini en 1963 aux Etats-Unis. C’est un code à 7 bits autorisant donc le codage de 128 caractères parmi lesquels, tous les caractères alphanumériques utilisés en anglais. Exemple : Code ASCII 7 bits, 27 = 128 mots de code * American Standard Code for Information Interchange Code ASCII étendu 8 bits, 28 = 256 mots de code Code Unicode 16 bits, 216 = 65536 mots de code - Le code ASCII de la lettre A est en hexadécimal 41, soit en binaire 01000001 ou encore en décimal 65. - Le caractère $ est codé 24 en hexadécimal et donc 00100100 en binaire. Son code décimal est 36. - Le caractère A est codé 41 en hexadécimal et donc 01000001 en binaire. Son code décimal est 65. - Le caractère Z est codé 5A en hexadécimal et donc 01011010 en binaire. Son code décimal est 90. - Le caractère a est codé 61 en hexadécimal et donc 01100001 en binaire. Son code décimal est 97. 9 I.5.3 Contrôle des erreurs 10 a- Le code de parité Codage de nombres binaires de 3 bits : Chaque mot de code est formé d’un nombre binaire et d’un bit de parité (appliqué aux bits 1). 11 b- Parité orthogonale Après correction : 110 c- Code de Hamming : 111 100 000 Le code d’Hamming utilise trois bits de parité pour quatre bits de données : Information (4 bits) : b4 b3 b2 b1 Bits de parité (3 bits) : p3 p2 p1 Disposition des bits après le codage (7 bits) : 12 • Les bits de parité p3, p2 et p1 sont le résultat d’un calcul de parité avec les autres bits : le bit de parité p1 est associé aux bits d’information b1 , b2 et b4 le bit de parité p2 est associé aux bits d’information b1 , b3 et b4 le bit de parité p3 est associé aux bits d’information b2 , b3 et b4 Tableau de codage 13 14 Chapitre II : Arithmétique binaire Les diverses opérations arithmétiques qui interviennent dans les ordinateurs et les calculatrices portent sur des nombres exprimés en notation binaire. II.1 Addition L’addition en binaire se fait avec les mêmes règles qu’en décimal : on commence par additionner les bits de poids faibles ; on a des retenues (reports) lorsque la somme de deux bits de même poids dépasse la valeur de l’unité la plus grande (dans le cas du binaire : 1) ; cette retenue est reportée sur le bit de poids plus fort suivant. La table d’addition binaire est la suivante : A B 0 0 1 1 Addition des nombres de 4 bits : 0011 +1001 +3 + 9 =1100 = 12 + + + + 0 1 0 1 C = = = = retenue (carry) 0 1 1 0 0 0 0 1 Exemples : 011 (3) + 110 (6) = 1001 (9) 1001 + 1111 = 11000 11, 011 + 10, 110 = 110, 001 L'addition est l'opération arithmétique la plus importante dans les systèmes numériques. Les opérations de soustraction, de multiplication et de division effectuées par les ordinateurs ne sont essentiellement que des variantes de l'opération d'addition. II.2 Soustraction Dans la soustraction binaire, on procède comme en décimal. Quand la quantité à soustraire est supérieure à la quantité dont on soustrait, on emprunte 1 au voisin de gauche. En binaire, ce 1 ajoute 2 à la quantité dont on soustrait, tandis qu’en décimal il ajoute 10. La table de soustraction binaire est la suivante : A B C retenue (borrow: retenue soustractive) 0 - 0 =0 0 0 - 1 =1 1 1 - 0 =1 0 1 - 1 =0 0 101,0 5 011,1 − 3,5 001,1 = 1,5 II.3 Multiplication La table de multiplication en binaire est très simple : 15 A 0 x 0 x 1 x 1 x B 0 1 0 1 = = = = C 0 0 0 1 On multiplie les nombres binaires de la même façon qu'on multiplie les nombres décimaux. Exemple 1001 ·1011 1001 1001 . 0000 . . 1001 . . . 1100011 multiplicande = 910 multiplicateur = 1110 Produits partiels produit final = 9910 La marche à suivre est exactement la même que pour les multiplications décimales. II.4 Division binaire La table de division binaire est la suivante : A B C 0 / 0 = impossible 0 / 1 = 0 1 / 0 = impossible 1 / 1 = 1 La division d'un nombre binaire (le dividende) par un autre (le diviseur) est identique à la division de deux nombres décimaux. En réalité, la division en binaire est plus simple puisque pour déterminer combien de fois le diviseur entre dans le dividende, il n'y a que 2 possibilités 0 ou 1. Voici deux exemples de division : 1 0 0 1 11 11 0011 11 11 (9/3 = 3) 000 1 0 1 0,0 100 0010 100 0 16 100 1 0,1 (10/4 = 2,5) II.5 Représentation des entiers signés Les signes – et + ne sont pas assimilables tels quels par un ordinateur lequel ne connait que deux états 0 et 1, leur représentation est réalisé grâce à un bit de poids fort. - Nombres positifs → le bit de poids fort est 0 ; - Nombres négatifs → le bit de poids fort est 1. Partant de ce principe, il existe différentes techniques pour représenter les nombres négatifs : II.5.1 représentation par signe et valeur absolue : Le nombre négatif est codé de la manière suivante : - Le bit de poids fort est à 1 - Les autres bits contiennent la valeur absolue du nombre Exemple décimal Binaire 12 0 0 0 0 1 1 0 0 -12 1 0 0 0 1 1 0 0 Le tableau suivant donne la représentation des nombres compris entre - 7 et +7 Un inconvénient de cette méthode est que pour réaliser des opérations entre nombres signés, il faut faire un traitement particulier du bit de signe ; une solution a été trouvée, c’est celle de l’utilisation du complément à 1 et le complément à 2. II.5.2 Représentation par le complément à 1 Le complément à 1 (noté C1) est également appelé complément logique, il consiste à inverser chaque bit (0→ 1 et 1→0) - L’entier positif est représenté sous sa forme naturelle ; - L’entier négatif est représenté par le complément à 1. Exemple décimal Binaire 12 0 0 0 0 1 1 0 0 -12 1 1 1 1 0 0 1 1 Pour cette représentation, l’addition n’est toujours pas aussi évidente. II.5.3 Représentation par le complément à 2 Le complément à 2 (noté C2) est également appelé complément vrai, il consiste à ajouter 1 en binaire au complément à 1. décimal Binaire 12 0 0 0 0 1 1 0 0 -12 1 1 1 1 0 0 1 1 +1 1 -12 1 1 1 1 0 1 0 0 17 II.5.4 Soustraction par complément à 1 et addition 1- On effectue l’opération (-8) + (-6) en complément à 1 -8 1 0111 -6 + 1 1001 = -14 = 11 0000 + 1 = 1 0001→le complément à 1 de 1 0001 est : 1 1110 = -14 Résultat La retenue générée par le bit de signe va être ajoutée au résultat de l’opération et on obtient le nombre 1 0001 en C1 qui est un nombre négatif correspond à 1 1110 2- On effectue l’opération (-8) + (+6) -8 1 0111 +6 + 0 0110 = -2 = 1 1101 →le complément à 1 de 1 1101 est : 1 0010 = -2 Résultat Dans ce cas il n’y a de retenue générée par le bit de signe. II.5.5 Soustraction par complément à 2 et addition Après avoir vu comment s’effectue une opération d’addition avec la représentation signe et valeur absolue et complément à 1, on va voir comment ça se passe avec la représentation en complément à 2. (-6)→ C1= 1 1001 →C2= 1 1010 (-8) →C1= 1 0111 →C2= 1 1000 1- On effectue l’opération (-8) + (-6) : -8 1 1000 -6 + 1 1010 = - 14 =11 0010 →le complément à 1 de 10010 est : 1 1101 + 1 =1 1110 = -14(10) Le débordement est ignoré 2- On effectue l’opération (-8) + (+6) : -8 1 1000 +6 + 1 1010 = -2 = 1 1110 →le complément à 1 de 1 1110 est : 1 0001 + 1 =1 0001 = - 2(10) Pas de débordement II.6 La représentation des nombres fractionnaires : II.6.1 Représentation en virgule fixe Dans cette représentation, la position de la virgule est laissée à l’appréciation du programmeur. En effet il s’agit uniquement d’un format d’affichage. Exemple, les prix sur une facture sont représentés systématiquement avec deux chiffres derrière la virgule. 12,50 sera représenté comme 1250. 18 • Dans cette représentation la partie entière est représentée sur n bits et la partie fractionnelle sur p bits , en plus un bit est utilisé pour le signe. • Exemple : si n=3 et p=2 on va avoir les valeurs suivantes Dans cette représentation les valeurs sont limitées et nous n’avons pas une grande précision II.6.2 Représentation en virgule flottante Chaque nombre réel peut s’écrire de la façon suivante : N= ± M * b e – M :mantisse , – b : la base , – e : l’exposant Exemple : 15,6 = 0,156 * 10+2 - ( 110,101)2 = - (0,110101)2 * 2+3 (0,00101)2= ( 0,101)2 * 2-2 Remarque : On dit que la mantisse est normalisée si le premier chiffre après la virgule est différent de 0 et le premier chiffre avant la virgule est égale à 0. Dans cette représentation sur n bits : – La mantisse est sous la forme signe/valeur absolue • 1 bit pour le signe • et k bits pour la valeur. – L’exposant ( positif ou négatif ) est représenté sur p bits . Pour la représentation de l’exposant on utilise : • Le complément à deux • Exposant décalé ou biaisé a- Représentation de l’exposant en complément à deux On veut représenter les nombres ( 0,015)8 et -( 15, 01)8 en virgule flottante sur une machine ayant le format suivant : 19 (0,015)8=(0,000001101)2= 0,1101 * 2-5 Signe mantisse : positif (0) Mantisse normalisé : 0,1101 Exposant = -5 utiliser le complément à deux pour représenter le -5 Sur 4 bits CA2(0101)=1011 - (15,01)8 = - (001101,000001)2= - 0,1101000001 * 24 Signe mantisse : négatif (1) Mantisse normalisée : 0,1101000001 Exposant = 4, en complément à deux il garde la même valeur (0100) 1 0100 11010000 1 bit 4 bits 8 bits Remarque : si la mantisse est sur k bits et si elle est représenté sur la machine sur k’ bits tel que k> k’ , alors la mantisse sera tronquée : on va prendre uniquement k’ bits perdre dans la précision . b- L’ Exposant décalé ( biaisé ) • en complément à 2, l’intervalle des valeurs qu’on peut représenter sur p bits : - 2 (p -1) ≤ N ≤ 2 (p -1) -1 Si on rajoute la valeur 2 (p -1) à tous les terme de cette inégalité : - 2 (p -1) + 2 (p -1) ≤ N + 2 (p -1) ≤ 2 (p -1) - 1 + 2 (p -1) 0 ≤ N + 2 (p -1) ≤ 2 p - 1 • On pose N’= N + 2 (p -1) donc : 0 ≤ N’ ≤ 2 p -1 • Dans ce cas on obtient des valeur positives. • La valeur 2p-1 s’appelle le biais ou le décalage Avec l’exposant biaisé on a transformé les exposants négatifs à des exposants positifs en rajoutons à l’exposant la valeur 2p -1. Exposant Biaisé = Exposant réel + Biais Exemple • On veut représenter les nombres (0,015)8 et - (15, 01)8en virgule flottante sur une machine ayant le format suivant : Signe mantisse Exposant décalé Mantisse normalisée 1 bit 4 bits 11 bits (0,015)8=(0,000001101)2= 0,1101 * 2-5 Signe mantisse : positif (0) Mantisse normalisé : 0,1101 Exposant réel = -5 Calculer le biais : b= 24-1 = 8 Exposant Biaisé = -5 + 8 = +3 = ( 0011)2 0 0011 11010000000 1 bit 4 bits 11 bits - (15,01)8=(001101,000001)2= 0,1101000001 * 24 Signe mantisse : négatif (1) Mantisse normalisée : 0,1101000001 20 Exposant réel = + 4 Calculer le biais : b= 24-1 = 8 Exposant Biaisé = 4 + 8 = +12 = ( 1100)2 1 1100 11010000010 1 bit 4 bits 11 bits c- Opérations arithmétiques en virgule flottante • Soit deux nombres réels N1 et N2 tel que N1=M1*be1 et N2=M2*be2 • On veut calculer N1+N2 ? • Deux cas se présentent : – Si e1 = e2 alors N3= (M1+M2) be1 – Si e1 <> e2 alors élevé au plus grand exposant et faire l’addition des mantisses et par la suite normalisée la mantisse du résultat. Exemple • Effectuer l’opération suivante : (0,15)8+ (1,5)8=(?) : (0,15)8= (0,001101) = 0,1101 *2-2 (1,5)8= (001, 1 01) = 0,1101 *21 (0,15)8+ (1,5)8 = 0,1101 *2-2 + 0,1101 *21 = 0,0001101 *21 + 0,1101 *21 = 0, 1110101 * 21 0 0001 111010 1 bit 4 bits 6 bits Exercice Donner la représentation des deux nombres N1= (-0,014)8 et N2=(0,14)8 sur la machine suivante : • Calculer N2-N1 . Avant de représenter les deux nombres on doit calculer le biais (décalage) B = 2 5-1 = 24 = 16 N1 = (-0,014) 8 = (-0,000001100) 2= (-0,1100) 2 . 2 - 5 ExpB= -5 + 16 = 11 = (01011)2 N2 = (0,14)8 = (0,001100)2= (0,1100)2. 2 -2 ExpB = -2 + 16 = 14 = (01110) 2 Donc on va avoir la représentation suivante pour N1 et N2 : N2 - N1 = 0,14 – (-0,014) = 0,14 + 0,014 N2 - N1 = (0,1100)2. 2-2 +(0,1100) 2. 2-5 = (0,1100)2. 2-2 +(0,0001100) 2. 2-2 = (0,1101100)2. 2-2 •Si on fait les calculs avec l’exposant biaisé : N2 - N1 = (0,1100)2. 214 + (0,1100) 2. 211 21 = (0,1100)2. 214 + (0,0001100) 2. 214 = (0,1101100)2. 214 Exposant biaisé = 14 Exposant réel = Exposant biaisé – Biais Exposant réel = 14 – 16 = -2 Donc on trouve le même résultat que la première opération. 22 Chapitre III : Algèbre de Boole Introduction L’algèbre de Boole est un outil mathématique qui permet d’exprimer le comportement de toute fonction numérique selon une expression logique composée à partir des trois opérateurs fondamentaux de l’algèbre. III.1 Définitions : · Etat: Les états logiques sont représentés par 0 et 1. · Variable logique (booléenne) : C'est une grandeur représentée par un symbole, qui peut prendre un état (0 ou 1). · Fonction : Elle représente un groupe de variables reliées par des opérateurs logiques. Exemple : 0 = lampe éteinte 1 = lampe allumée III.2 Table de vérité d'une fonction logique. Définition : Une table de vérité est un tableau permettant de décrire toutes les possibilités de sorties en fonction de entrées. Exemple : III.3.Opérateurs logiques de base III.3.1 L’opérateur NON • NON : est un opérateur unaire ( une seule variable) qui a pour rôle d’inverser la valeur d’une variable . S= f(e) = NON e = e III.3.2 L’opérateur ET (AND) • Le ET est un opérateur binaire (deux variables), a pour rôle de réaliser le Produit logique entre deux variables booléennes. • Le ET fait la conjonction entre deux variables. S= f(a,b) = a ET b = a.b 23 III.3.3 L’opérateur OU ( OR ) • Le OU est un opérateur binaire ( deux variables) , a pour rôle de réaliser la somme logique entre deux variables logiques. • Le OU fait la disjonction entre deux variables. • Le OU est défini par S= f (a,b)= a OU b = a + b ( il ne faut pas confondre avec la somme arithmétique ). III.3.4 L’opérateur OU EXCLUSIF (EXOR) Le OR est dit ou inclusif car il implique que l’une ou l’autre des entrées passe à 1, ou toutes les deux, pour que la sortie passe à 1. A l’inverse le ou exclusif exclut la possibilité d’un passage simultané des entrées à 1 : il implique que l’une ou l’autre des entrées passe à 1, mais pas les deux simultanément, pour que la sortie passe à 1. 24 III.3.5 L’opérateur logique NOR Le résultat d’un OU entre a et b peut être inversé, ce qui donnera la table de vérité suivante : S = f(a,b) = a+b = a NOR b III.3.6 L’opérateur logique NAND En inversant le résultat de l’opération AND, nous obtenons la table de vérité suivante : S = f(a,b) = a.b = a NAND b 25 Application : Compléter le tableau suivant en servant des tables de vérités données au cours 26 III.4 Représentation des fonctions booléennes : La fonction logique est le résultat de combinaison (logique combinatoire) d’une ou de plusieurs variables reliées entre elles par des opérations mathématiques booléennes bien définies. a- Formes algébriques on peut la représenter en utilisant les opérations logiques. Exemple : F(a,b) = a.b + a.b ; a.b et a.b sont des termes algébriques. b- Table de vérité : soit la fonction S = ab + ac + bc c b a S 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 c- Table de karnaugh La table de vérité présente un inconvénient : le nombre de lignes croit en même temps que le nombre de variables. Une table de Karnaugh est simplement une table où toutes les entrées voisines sont adjacentes. 27 d- Logigramme ou schéma logique : III.5 Forme canonique d’une fonction logique On appel forme canonique d’une fonction la forme ou chaque terme de la fonction comportent toutes les variables. Exemple : Il existe plusieurs formes canoniques : les plus utilisées sont la première et la deuxième forme III.5.1 Première forme canonique (forme disjonctive) : somme de produits C’est la somme des min termes. Une disjonction de conjonctions. Exemple : Cette forme est la forme la plus utilisée. III.5.2 Deuxième forme canonique (conjonctive): produit de sommes Le produit des max termes. Conjonction de disjonctions Exemple : La première et la deuxième forme canonique sont équivalentes . III.5.3 Extraction de la fonction logique à partir de la T.V F = somme min termes F = produit des max termes 28 Exercice 1 • Déterminer la première, la deuxième forme canonique et la fonction inverse à partir de la TV suivante ? Tracer le logigramme de la fonction ? III.6 Simplification des fonctions logiques L’objectif de la simplification des fonctions logiques est de réduire le nombre de termes dans une fonction , réduire le nombre de variables dans un terme. Cela afin de réduire le nombre de portes logiques utilisées (réduire le coût du circuit). Plusieurs méthodes existent pour la simplification : – La Méthode algébrique – Les Méthodes graphiques : ( ex : table de karnaugh ) 29 III.6.1 Méthode algébrique Le principe consiste à appliquer les règles de l’algèbre de Boole afin d’éliminer des variables ou des termes. A- Propriétés de l’algèbre de BOOLE Somme Produit a + 0 = a Elément neutre a . 1 = a a + 1 = 1 Elément absorbant a . 0 = 0 a + a = a Idempotence (redondance) a . a = a a + a = 1 Propriété du complément a .a = 0 a + b = b + a a+b+c=a+(b+c) =(a+b)+c Commutativité Associativité a . b = b . a abc=a(bc)=(ab)c Combinaisons Somme - Produit. Distributivité : - du produit par rapport à la somme : a(b+c)= ab + ac - de la somme par rapport au produit : a+bc = (a+b)+(a+c) * Propriété d’absorption : Lorsqu’une somme logique contient un terme et un de ses multiples, on peut négliger le multiple. Exemples : x + x y =x a b + a b c d = a b x + x y + x + x y z = x a b + a b c + a b c d = ab * Règle du multiple du complément. a + a b = (a + a ) (a + b) = a + b a + a b + a b c + a b c = a (1 + b + b c ) + abc = a + bc Théorème de De Morgan : • Le complément d’une somme est égal au produit des compléments de chaque facteur : • Le complément d’un produit est égal à la somme des compléments de chaque facteur : 30 • Mais il n’y a pas une démarche bien spécifique Règles 1 : regrouper des termes à l’aide des règles précédentes Règles 2 : Rajouter un terme déjà existant à une expression • Exemple : Règles 3 : il est possible de supprimer un terme superflu ( un terme en plus ), c’est-à-dire déjà inclus dans la réunion des autres termes. Exemple 1 : Exemple 2 : il existe aussi la forme conjonctive du terme superflu Règles 4 : il est préférable de simplifier la forme canonique ayant le nombre de termes minimum. • Exemple : 31 III.6.2 La Méthode graphique ( tableau de Karnaugh) : La représentation des fonctions sur un tableau de Karnaugh permet de déceler rapidement des simplifications. Règle : L'équation minimale sera obtenue en pratiquant les groupements maximaux par puissance de 2, (2, 4, 8 cases), de cases adjacentes. L'expression d'un groupement contient uniquement les variables qui ne changent pas d'état Exemples : Soit la fonction S = a + ab dont la figure 73 donne le tableau de Karnaugh L'équation déduite du groupement est S = a, a est la seule variable qui dans ce groupement ne change pas d'état. Simplifier la fonction : L = +a + b La figure suivante donne les tableaux de Karnaugh correspondants. L'équation simplifiée est donc L= : + Simplifier la fonction : L = bd + La figure suivante donne les tableaux de Karnaugh correspondants. +a D'où l'équation simplifiée : L = ac + bd + 32 cd + c + abc 33 34 35 Chapitre IV : logique combinatoire et séquentielle Introduction Un circuit logique est un dispositif qui traite et exécute des opérations logiques sur des variables logiques. On rencontre deux types de circuits logiques : - Les circuits logiques combinatoires ; - Les circuits logiques séquentiels. IV.1 Le système combinatoire : On appelle système combinatoire tout système numérique dont les sorties sont exclusivement définies à partir des variables d’entrée IV.1.1 Synthèse d’un circuit combinatoire : A partir d’une fonction logique, il faut déterminer un logigramme qui réalise cette fonction. - Démarche pour réaliser la syntaxe d’un circuit combinatoire : Construire la table de vérité de la fonction logique En déduire une expression algébrique Simplifier cette expression en utilisant les tables de Karnaugh ou les théorèmes de l’algèbre de Boole Réaliser la fonction logique à l’aide d’opérateurs divers. Le logigramme est l’aboutissement de la procédure de synthèse. a- Demi-additionneur (1 bit) Consiste à additionner 2 bits A et B et à récupérer le bit de somme S et le bit de retenue R. La table de vérité On en déduit directement les équations logiques de ces 2 sorties : S A ⊕B R = A.B Le schéma correspondant est donc : 36 On appelle ce système logique un demi-additionneur, car il ne prend pas en compte une éventuelle retenue provenant du résultat de l’addition des 2 bits de rang directement inférieur. b- Additionneur complet Un additionneur complet comporte 3 entrées : les deux bits à additionner A et B, et la retenue issue de l’addition des 2 bits de rang inférieur (dite entrante), Rn-1. Il possède 2 sorties : la somme S et la retenue sortante Rn. Sa table de vérité est la suivante : L’expression de la sortie somme S est : L’expression de la retenue de sortie Rn est : Le schéma correspondant est : 37 IV.1.2 Analyse d’un circuit combinatoire L’analyse consiste à trouver la fonction d’un circuit dont on connaît uniquement le logigramme. Cette fonction est unique. La marche à suivre pour faire l’analyse est la suivante : En procédant des entrées vers les sorties, donner pour chaque opérateur l’expression de sa sortie en fonction de ses entrées jusqu’à obtention d’une expression pour chaque fonction (sortie) réalisée par le circuit. Donner la table de vérité correspondante et en déduire le rôle du circuit. Exemple Soit à analyser le circuit combinatoire suivant : A B C A B C T1 F1 T2 A B A C C B T3 F2 Pour analyser on va procéder comme suit : 1- Calculons les fonctions de sorties : F1 et F2 Nous avons : T1= A.B.C T2= A+B+C F2= AB+AC+BC On peut calculer T3 : T3 = T2. F2 = (A+B+C).(A+B). (A+C). (B+C) T3= (A+B+C).(A+B + C.C). (A+B.B +C ). (A.A + B+C) T3 = (A+B+C).(A+B + C) (A+B + C) (A+B + C) (A+B + C) (A+B + C) (A+B + C) T3 = (A+B+C).(A+B + C) (A+B + C) (A+B + C) (A+B + C) T3= M0 . M6. M5 . M3 . M7 A partir de cette expression on peut exprimer T3 sous la première forme : T3 = m1 . m2 . m4 T3 = A B C + A B C + A B C 38 Enfin on peut calculer F1 : F1 = T1 + T3 = A B C + A B C + A B C + A B C Nous avons enfin les équations des variables de sorties F1 et F2 2- On dresse la table de vérité correspondante : A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 T1 0 0 0 0 0 0 0 1 T2 0 1 1 1 1 1 1 1 F2 0 0 0 1 0 1 1 1 T3 0 1 1 0 1 0 0 0 F1 0 1 1 0 1 0 0 1 Dressons la table qui mettre en évidence les variables A, B, C et les variables de sorties F1 et F2 A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 F2 0 0 0 1 0 1 1 1 F1 0 1 1 0 1 0 0 1 On remarque que : 0+0+0= 0 retenue 0 0+0+1= 1 retenue 0 0+1+0= 1 retenue 0 0+1+1= 0 retenue 1 1+0+0 = 1 retenue 0 1+0+1 = 0 retenue 1 1+1+0=0 retenue 1 1+1+1 = 1 retenue 1 A partir de cette dernière, on conclut que le rôle du circuit est l’addition des trois bits A B C tel que la sortie F1 indique la somme et F2 indique la retenue de l’addition IV.1.3 Les circuits logiques combinatoires IV.1.3.1 Les Codeurs 1. Définition Le codeur (ou encodeur) est un circuit logique qui possède 2N voies entrées, dont une seule est activée et N voies de sorties. Il fournit en sortie le code binaire correspondant. Schéma fonctionnel d’un codeur 39 2. Principe d’un codeur 4 voies d’entrées et 2 bits de sortie Schéma fonctionnel Table de vérité Equation des sorties S1=1 si (A2=1) ou (A3=1) ; S1=A2+A3 S0=1 si (A1=1) ou (A3=1) ; S0=A1+A3 Logigramme IV.1.3.2 Codeur de priorité C’est un dispositif qui réalise le codage du numéro le plus élevé dans le cas ou plusieurs entrées seraient actionnées. Pour cette raison, ce codeur possède des circuits logiques en plus, de sorte que le code de sortie choisi quand deux entrés sont actives soit celui qui correspond au nombre supérieur - Table de vérité - Codeurs en circuits intégrés 40 Codeur BCD de priorité 74147 Le circuit intégré 74147 est un codeur de priorité à 9 entrées. Il est actif à l’état bas et produit à la sortie le code BCD inversé. - Table de vérité IV.1.3.3 Les Décodeurs 1. Définition et fonctionnement Un décodeur est un circuit logique combinatoire qui a une entrée binaire de n bits permettant 2n combinaisons. Suivant le type de décodeur, la sortie peut traduire deux fonctions : Convertisseur de code à un code de sortie d'entrée correspond un code de sortie. Exemple : Un décodeur binaire octal possède 3 bits d'entrés permettant 23=8 combinaisons pour activer chacun des 8 sortie de l'octal. Sélecteur de sortie : Une seule sortie parmi les M disponibles est activée à la fois en fonction de la valeur binaire affichée à l'entré. Ces fonctions permettent d'activer (sélectionner) un circuit intégré parmi plusieurs. 2. Principe d’un décodeur 1 parmi 4 Pour pouvoir activer toutes les 4 voies on a besoin de 2 bits à l'entrée car c'est 22=4 Table de vérité 41 Equations de sorties Logigramme Remarque: Certains n'utilisent pas toute la gamme de 2n combinaisons d'entrées possibles. C'est le cas du décodeur DCB décimal qui a 4 bits d'entrée et 10 sorties donc une seule est active dans chacune des 10 représentations du DCB 3. Synthèse de décodeurs DCB 7segments Les 10 chiffres décimaux (0 à 9) et parfois les caractères de l'hexadécimal (A à F) peuvent être configurés au moyen de 7 segments (voir ci-dessous). Chaque segment est constitué d'un matériau qui émet de la lumière lorsqu'il est traversé par un courant. Les matériaux les plus utilisés sont les LED et les filaments incandescents. Table de vérité Équations logiques de sorties 42 43 IV.1.3.4 Transcodeurs Un transcodeur est un circuit qui permet de faire passer une information écrite dans un code C1 vers un code C2. Il est généralement formé d’un décodeur en cascade d’un codeur a- Transcodeur binaire Gray Table de vérité Equations de sorties Logigramme IV.1.3.5 Multiplexeur 1. Définition Multiplexeur : circuit qui permet de sélectionner une entrée parmi plusieurs et acheminer cette entrée 0 une sortie unique Le choix de l’entrée se fait par une série de lignes de sélection Habituellement, on a 2n entrées et n bits de sélection, et une seule sortie sur un multiplexeur Les bits de sélections sont aussi appelés des adresses Multiplexeur 2n vers 1 a- Multiplexeur à 4 entrées (4 vers 1) Un multiplexeur 4 vers 1 est un circuit logique qui est formé de 4 entrées E0, E1, E2, E3 qui sont transmises selon le choix indiqué par l’une des quatre combinaisons possibles des sorties de sélection C0 et C1 Table de fonctionnement 44 Equation boolienne de sortie Circuit logique IV.1.3.6 Démultiplexeur Le démultiplexeur réalise l’inverse d’un MUX : il aiguille une seule entrée vers une parmi 2n vois de sorties. Les démultiplexeur fonctionnent comme un commutateur. Ils comportent une entrée de donné E, n entrées de sélection (C1, C2,…, Cn) et 2n sorties (S1, S2,…, S2n) Démultiplexeur 1 vers 2n Table de vérité IV.1.3.7 Comparateur C’est un circuit permettant de comparer 2 mots de n bits chacun en indiquant sur ses sorties S1, S2 ou S3 si le premier mot est égal, plus grand ou plus que le second. 45 a- comparateur 2 bits Schéma fonctionnel de comparateur 2 bits Table de vérité Equations logiques de sorties Logigramme à l’aide des portes logiques de base 46 IV.2 Les circuits séquentiels La fonction de sortie des systèmes séquentiels dépend en plus des états des entrées (appelées entrées primaires) des états antérieurs des sorties (appelées entrées secondaires). On dit que le circuit séquentiel possède une fonction mémoire. Les systèmes séquentiels sont classes en 2 catégories : Circuits séquentiels asynchrones Dans les circuits séquentiels asynchrones, les sorties changent d’états dès qu’il y a changements des états des entrées. Circuits séquentiels synchrones Dans ce type de circuits les sorties changent d’états après avoir eu une autorisation d’un signal de synchronisation appelé souvent signal « Horloge » noté H ou CLK. IV.2.1 Les bascules asynchrones La bascule est le circuit de mémorisation le plus répandu. Elle a aussi pour rôle d’élaborer un diviseur de fréquence par deux. Elle est un système séquentiel constitue par une ou deux entrées et deux sorties complémentaires. On l’appelle ainsi « bascule bistable » car elle possède deux états stables. On distingue 4 types de bascules : RS, D, JK, et T. a- Bascule RS 47 48 b- Bascule D Remarque : En mettant S=D et R=D dans l’équation de la bascule RS on aura Qn+1=DQn+D=D(1+Qn)=D. Ainsi on obtient une bascule D en rajoutant un inverseur entre S et R. 49 c- Bascule JK Contrairement à la bascule RS, la condition J=K=1, ne donne pas lieu à une condition indéterminée, mais par contre la bascule passe à l’état opposé. d- Bascule T La bascule T est obtenue en reliant les entrées J et K d’une bascule JK. Remarque : En remplaçant J et K par T dans l’équation de la bascule JK on aura Qn+1=TQn+TQn=TQn. 50 IV.2.2 Les bascules synchrones Une bascule est synchrone quand ses sorties ne changent d’état que si un signal supplémentaire est appliquée sur une entrée, dite entrée d’horloge (notée H ou CLK) IV.2.2.1 Synchronisation sur niveau haut - Si H=0 : les sorties S et R sont bloquées à 1 quelques soient R et S, (les entrées sont masquées par rapport aux sorties) la sortie garde l’état précèdent. - Si H=1 : la bascule RS fonctionne normalement les sorties obéissent aux entrées. - Donc la bascule RS ne fonctionne normalement que si H=1 (Niveau Haut). - Même chose pour les autres bascules. IV.2.2.2 Synchronisation sur niveau bas Dans le niveau bas, c’est l’inverse qui se manifeste : Si H=1 : Q garde l’état précèdent. Si H=0 : Fonctionnement normal de la bascule IV.2.2.3 Synchronisation sur front Une variable logique S peut avoir deux niveaux : le niveau haut (Vrai) ou le niveau logique bas (Faux). Quand elle passe du niveau bas vers le niveau haut, elle définit le front montant. Dans le cas contraire, elle définit le front descendant. 51 Symboles A- Principe de fonctionnement d’une bascule JK synchronisée sur front montant Chronogramme : 52 VI.2.3 Les registres : Un registre est ensemble un ordonné de n bascules. Un registre permet de mémoriser ( sauvegarder) une information sur n bits VI.2.3.1 Type de registres Il existe plusieurs types de registres : ◦ Registre à entrées parallèles et sorties parallèles (Registre à chargement parallèle ). ◦ Registre à entrée série et sortie série ◦ Registre à entrée série et sortie parallèle. ◦ Registre à entrée parallèle et sortie série. Registre à décalage circulaire a- Registre à entrées parallèles et sorties parallèles (Registre à chargement parallèle Il peut charger une information sur N bits en même temps. Les n bascules changement d’états en même temps. Chaque bascule Bi prend la valeur de l’information i. Il possède une entrée de chargement chg ( chg=0 à état mémoire, chg=1 chargement b- Registre à entrée série et sortie série L’information est introduite bit par bit ( en série). L'ensemble du registre est décalé d'une position ( Bi, Bi+1) et la bascule B0 reçoit une nouvelle entrée ES. Un tel registre est appelé registre à entrée série à gauche et à sortie série à droite 53 c- registre à entrée série à droite et à sortie série à gauche. d- Registre à entrée série et sortie parallèle. e- Registre à entrée parallèle et sortie série. f- Registre à décalage circulaire • C'est un registre qui effectue un décalage vers la gauche en répercutant la sortie de la dernière bascule vers l'entrée de la première bascule. Le décalage peut être un décalage à droite (circulaire droite) ou gauche ( circulaire gauche) 54 VI.2.4 Les compteurs : Un compteur est un circuit séquentiel qui possède N états ( E0,E1,…..,En-1). À chaque top d’horloge, il passe de l’état Ei à l’état Ei+1. Il revient toujours à l’état initial E0 : Un compteur possède un cycle (une séquence d’états). Un compteur est constitué de n bascules. Le nombre d’états d’un compteur est inférieur ou égale à 2n. Il existe deux types de compteurs : les compteurs synchrones et asynchrones. Les compteurs asynchrones ou compteurs série La première bascule est synchronisée par une horloge externe mais le déclenchement des autres bascules est déterminé par une combinaison logique des sorties des bascules précédentes. La propagation de l'ordre de changement d'état se fait en cascade. Les sorties des bascules ne changent pas d'état exactement en même temps car elles ne sont pas reliées au même signal d'horloge Les compteurs synchrones ou parallèles Le signal d'horloge externe est connecté à toutes les bascules et permet de les déclencher toutes simultanément. IV.4.1 Compteurs asynchrones a) Compteur binaire On a vu qu’en connectant les entrées J et K d’une bascule JK à 1, la sortie Q de cette bascule constituait la fréquence d’horloge divisée par 2. Le schéma ci-dessous représente un exemple de compteur à 3 bascules JK. Les entrées J et K sont à 1 donc les bascules changent d'état à chaque front actif de leur horloge (front descendant). La bascule S1 change d'état à chaque front descendant de l'horloge 55 externe, la bascule S2 à chaque front descendant de S1 et la bascule S3 à chaque front descendant de S1 b) Compteur modulo N Les compteurs modulo 2n ( cycle complet): ◦ n=2 : 0 ,1,2,3,0 modulo 4 ◦ n=3 : 0,1,2,3,4,5,6,7,0 modulo 8 ◦ n=4 : 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0 modulo 16 Les compteurs à cycle quelconque : ◦ 0,2,5,6,7,8,10,0 Étude des compteurs modulo 2n exemple Modulo 8 ( bascules JK) + + + Q2 Q1 Q0 Q2 Q1 Q0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 1 1 1 0 0 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 0 0 Chronogramme d’un compteur asynchrone modulo 8 56 Schéma d’un compteur asynchrone modulo 8 Études des Compteurs modulo N exemple modulo 6 Détection de l’état 110 et remise à zero asynchrone : Cli=0 et Pri=1 Chronogramme d’un compteur modulo 6 asynchrone 57 58