La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

A. Lebrun. La base 2 Un nombre peut se représenter en base deux par une suite de 0 ou de 1. Chaque bit a un poids qui dépend de son rang Le format n impose.

Présentations similaires


Présentation au sujet: "A. Lebrun. La base 2 Un nombre peut se représenter en base deux par une suite de 0 ou de 1. Chaque bit a un poids qui dépend de son rang Le format n impose."— Transcription de la présentation:

1 A. Lebrun

2 La base 2 Un nombre peut se représenter en base deux par une suite de 0 ou de 1. Chaque bit a un poids qui dépend de son rang Le format n impose que le nombre est compris entre 0 et 2 n -1 ) Ex: pour le format 6 le nombre est compris entre 0 et 63.

3 Nombre décimal Ce qui est vrai pour les nombres entiers est également vrai pour les nombres décimaux. Le bit de rang R avant la virgule a un poids de 2 r et celui de rang R’ après la virgule a un poids de 2 –r’ N = b8b7b6b5b4b3b2b1b0,b(-1)b(-2) N = b8*2 8 + b7*2 7 + b6*2 6 + b5*2 5 + b4*2 4 + b3*2 3 + b2*2 2 + b1*2 1 + b0*2 0 + b(-1)*2 (-1) + b(-2)*2 (-2)

4 Calcul en binaire Les calculs en binaire ont été initiés par Von Leibnitz et développé par Claude Shannon Gottfried Wilhelm von Leibniz, le grand mathématicien précurseur de l'informatique et des calculs en nombre binaire.

5 Addition de deux bits en binaire Pour additionner deux nombres en binaires, on agit comme en décimal: on additionne les bits de même rang de chacun des nombres Table d’addition en binaire 0+0=0S=0 R=0 0+1=1S=1 R=0 1+0=1S=1 R =0 1+1= 10S= 0 R = 1

6 Circuits pour S et R L’addition de deux bits a et b donne deux bits S(a,b) et R (a,b) respectivement appelé Somme et Retenue D’après la table d’addition S(a,b)= ab + ab R (a,b) = ab On en déduit le circuit que l’on appellera demi- additionneur

7 Schéma du demi-additionneur A B =1 S = a+b & R = a.b

8 Additionneur complet Pour faire une addition sur le rang n, il faut tenir compte de la retenue du rang n-1. Pour additionner deux nombres, on doit donc être capable d’additionner trois bits a,b et r -1 Il faut donc trouver les fonctions R et S d’une somme de trois bits

9 Table de vérité abR-1SR 00000 00110 01010 01101 10010 10101 11001 11111

10 Fonction S Sa b R-10101 1010 La fonction S est donc donnée par: S= a + b + R-1

11 Fonction R Ra b R-10010 0111 R = R-1 (a + b) + ab

12 Schéma additionneur An bn Rn-1 =1 Sn & & >1 Rn

13 Schéma simplifié En général on représente l’additionneur complet 1 bit sous la forme suivante: Rn-1 ADD an bn Sn Rn

14 Additionneur N bits Montage en cascade Pour réaliser l’addition de deux nombres de n bits, il suffit de monter en cascade des additionneurs 1 bits Il faut laisser la première entrée de retenue de l’additionneur a 0 Attention le résultat de l’addition de 2 nombres de N bits comprend N+1 bits (N bits de sommes et 1 bit de retenue)

15 Additionneur 3 bits ADD a b S R a2 a1 a0b2 b1 b0 S0 S1 S2 R2

16 Schéma simplifié d’additionneur N bits.

17 Inconvénient L’addition cascade devient longue si le nb de bits devient important car il faut pour calculer la dernière retenue connaître toutes celles avant Amélioration possible: faire un additionneur avec un générateur de retenue anticipée: Sn+1 A0.. An B0 Bn A1 B1 R0 add S0 add S1 S2 Sn add An Bn GRA

18 Calcul anticipé des retenues R0= a0.b0= P0 R1= a1.b1 + R0(a1+b1) = P1 + P0S1 R2= a2.b2 + R1 (a2 + b2) = P2 + (P1 + P0S1)(S2) R2 = P2 + P1S2 +P0S1S2 R 3 = P3 + R2(a3 + b3) = P3 + P2S3 +P1S2S3 + PoS1S2S3 Ri = Pi + P1-1Si +Pi-2SiSi-1 + …. + P0S1S2…Si Le calcul anticipé des retenues devient intéressant à partir de 8 bits en terme de temps de calcul.

19 19 Représentation des nombres réels Codage des réels : virgule flottante flottant stocké sous la forme M * B E M : Mantisse ; B : Base ; E : Exposant exemple : 123. 10 3 = 123 000 Représentation IEEE 754, base 2 (signe 1 bit, exposant et mantisse sur 32 ou 64 bits pour simple et double précision) SM : signe de la mantisse : 1 bit Eb : exposant biaisé : 8 ou 11 bits M : Mantisse : 23 ou 52 bits

20 20 Mantisse et exposant Signe : bit de poids fort (0 = + ; 1 = -) Exposant placé avant la mantisse pour simplifier les comparaisons sur 8 bits : 0..255 sans signe mais biaisé de 127 (on enlève 127) : Eb = 0 ⇒ E = 0 – 127 = -127 Eb = 255 ⇒ E = 255 – 127 = 128 Remarque : E>0 si et seulement si le bit de poids fort de Eb =1 Mantisse normalisée : bit de poids fort n’est pas 0 et un seul chiffre avant la virgule ex : 3,25 10 =11,01 = 1,101 * 2 1 s’écrit 01000 00001010……0

21 21 Virgule Flottante Mantisse : Comme le bit de poids fort de la mantisse est nécessairement 1, on ne l’indique pas (gaspillage de place). Il est implicite partie fractionnaire = f1f2 …fn ⇒ m = 1,f1f2…fn nombre x = (-1) SM * 1,M * 2 Eb-127 Exemple x = (-2,5) 10 = (-1,01*2 1 ) 2 SM = 1 ; E= 1 => Eb= 128 = 1000 0000 ; m=1,01 => M = 010…….0 11000 0000010……0

22 Addition de nombres réels Pour additionner les nombres réels, on fait comme on a appris en primaire (attention de ne pas oublier le 1 non codé représentant la partie entière) Ecrit les nombres dans la représentation réelle Aligner les puissances en décalant de la plus petite de de la différence des puissances entre les deux nombres Faire l’addition normalement Réécrire le résultat correctement suivant la représentation 1,b0b1

23 Il faut décaler de deux rangs B pour aligner les mantisses sans oublier le 1 23 Exemple : 452,5+117,5 A=1.11000100100000000000000*2 8 B=1.11010110000000000000000*2 6 Addition des mantisses alignées A=1.110001001000000000000000000*2 8 +B=0.011101011000000000000000000*2 8 S=10.001110100000000000000000000*2 8 Normalisation de la mantisse S'=1.000111010000000000000000000*2 9 452,5= 117,5= 01000 000111010……0

24 Représentation des nombres Représentez en notation à virgule flottante les nombres suivants: -125 12,35 1865,32 -418769

25 Représentation des nombres Représentez en notation à virgule flottante les nombres suivants: -125 = 12,35 = 1865,32 = -418769 = 1100001001110100……001000 00101000101100110011001100101000 1110010010101000111101011001 000110011000111101000100000

26 Représentation des entiers négatifs Pour représenter les nombres négatifs, le plus simple est prendre un bit pour le signe et les autres pour la valeur absolu du nombre Par convention 0 indique un nombre positif et 1 indique un nombre négatif 5= 0101 et -5= 1101 mais on a deux représentations de 0 Ex: sur 4 bits 0=0000 mais on a aussi 0=1000 Autre inconvénient: la somme de deux nombres de signe différent donne un résultat faux. (5+ (-3)) = 0101 +1011 = 1 0000 soit 0

27 Représentation en complément à 1 Les nombres positifs sont écrits en base 2, pour les nombres négatifs on inverse tous les bits 5= 0101 donc –5 = 1010 Il y a toujours deux représentations de 0 Le résultat de la somme de deux nombres de signes différents donne une valeur qui diffère de 1 du résultat exact 5 + (-3)= 0101 + 1100 = 1 0001 soit 1 si on ne tient pas compte du bit de retenue.

28 Représentation en Complément à 2 Identique au complément à 1 sauf que l’on ajoute 1 à la représentation du nombre négatif en complément à 1 +5 = 0101 (-5) c1 = 1010 (-5) c2 = 1011 Sur 4 bits, le nombre le plus grand est codé en C2 0111 et vaut donc 7 (-7) c2 = 1001 et la combinaison 1000 correspond à -8 En C2 sur n bits on peut coder les nombres entre - 2 n-1 < N < 2 n-1 -1

29 Code de calcul Pour faire les calculs, on utilise toujours le code C2 Les nombres positifs sont représentés par leur valeur en base 2 précédée de 0 Les nombres négatifs sont l’inverse de la représentation positive + 1 Les résultats sont toujours juste si on reste dans la gamme de valeur que peut représenter le code avec le nombre de bits choisi.

30 Exercices: Codez les nombres suivants en C2 sur 6 bits 12 27 -15 -8 0 -21

31 Réponses: Codez les nombres suivants en C2 sur 6 bits 12 = 001100 27 = 011011 -15 = 110001 -8 = 111000 0= 000000 -21= 101011

32 questions Quelles valeurs représentent ces nombres codés en C2? 001011 101001 111111 110011 100000

33 Réponses Quelles valeurs représentent ces nombres codés en C2? 001011 = 11 101001 = -23 111111 = -1 110011= -13 100000= -32

34 Problèmes de dépassement Le fait d’additionner deux nombres positifs ou deux nombres négatifs avec le code C2 peut entraîner un dépassement de capacité Ex 3+6 = 0011 + 0110 = 1001 = (-7) Ex (-4) + (-7) = 1100 + 1001 = 1 0101 = 3 Cela n’est pas gênant car il est facile de le détecter: la somme de 2 nombres de même signe est un nombre de même signe.

35 Comment faire une soustraction? Une soustraction consiste à additionner un nombre avec l’inverse du second. Pour inverser un bit, on peut prendre une porte inverseuse ou une porte ou exclusif avec 1 branché sur une entrée a1a + 1= a 011 110

36 Comment faire une soustraction On prend un additionneur n bits Sur les entrées A on entre la valeur du premier nombre Sur les entrées B on entre les valeurs du second nombre en les inversant par une porte ou exclusif dont une entrée est à 1 On ajoute 1 sur la valeur de retenue d’entrée Suivant la valeur 0 ou 1 que l’on met sur cette entrée on fait donc une addition ou une soustraction.

37 Faire une soustraction avec additionneur =1 Vcc a0 an b0 bn

38 Additionneur_soustracteur Si Ec = 0 additionneur, si Ec=1 soustracteur =1 EC a0 an b0 bn

39 Additionneur/soustracteur On met 0 sur Add/sous pour avoir un additionneur On met 1 sur Add/sous pour avoir un soustracteur

40 Réalisation d’un multiplieur

41 Multiplication = suite d’additions On sait faire l’addition de deux nombres On sait donc réaliser un multiplieur en utilisant des additionneurs On obtient un premier résultat partiel en additionnant les deux premières lignes On ajoute à ce résultat partiel la troisième ligne et ainsi de suite Attention aux décalages Pour multiplier 2 nombres de n bits on a besoin de n-1 additionneurs de 2n bits

42 Multiplieur 4 bits


Télécharger ppt "A. Lebrun. La base 2 Un nombre peut se représenter en base deux par une suite de 0 ou de 1. Chaque bit a un poids qui dépend de son rang Le format n impose."

Présentations similaires


Annonces Google