Les nombres en binaire Forme générale d un nombre : (système de numération pondérée) ELE1300 Circuits logiques Arithmétique binaire a a a a, a a a n1 n2 1 0 1 2 m b partie entière partie fractionnaire base n chiffres m chiffres 2 Les nombres en binaire ( ) Les nombres en binaire ( ) a a a a, a a a n1 n2 1 0 1 2 m b Compter en base 10, cela signifie qu on va faire des paquets de 10 objets 51 = 5 x 10 + 1 163 = 1 x 100 + 6 x 10 + 3 1964 = 1 x 1000 + 9 x 100 + 6 x 10 + 4 Valeur : b b b b b b b n 1 n 2 1 0 1 2 m a b a b a ba n 1 n2 n 1 n 2 1 0 a b a b a b -1-2 - m -1-2 - m Compter en base 2, cela signifie qu on va faire des paquets de 2 objets 51 = 1 x 32 + 1 x 16 + 1 x 2 + 1 163 = 1 x 128 + 1 x 32 + 1 x 2 + 1 1964 = 1 x 1024 + 1 x 512 + 1 x 256 + 1 x 128 + 1 x 32 + 1 x 8 + 1 x 4 3 4
Convertion entre les bases Conversion d une base quelconque en base décimale : MÉTHODE POLYNOMIALE Développer le polynôme et faire le calcul Exemples : binaire en décimal 01011 (2) = 1 2 3 + 1 2 1 +1 2 0 = 8+2+1=11 en base 10 11001 (2) = 1 2 4 + 1 2 3 +1 2 0 = 16+8+1=25 en base 10 Conversion entre les bases ( ) Conversion d une base décimale en base quelconque : MÉTHODE ITÉRATIVE Le calcul se fait différemment pour la partie entière et la partie fractionnaire a a a a, a a a n1 n2 1 0 1 2 m b 011111 (2) =? (10) 1000001 (2) =? (10) partie entière n chiffres partie fractionnaire m chiffres base 1000,001 (2) =? (10) 011,111111 (2) =? (10) 5 6 Conversion entre les bases ( ) Conversion entre les bases ( ) MÉTHODE ITÉRATIVE ( ) Exemple : 57 (10) =? (2) Exemple : 637 (10) =? (2) 7 Pour la partie entière (E) Partie entière : E a b a b a b a b n 1 2 1 0 n1 2 1 0 E n2 1 0 a0 a0 a n 1 2 1 1 1 reste b b a b a b Q Q a b b 0 Q1 n3 0 a1 a1 an 1 2 2 2 reste b b a b Q Q a b b 1 Q2 n4 0 a2 a2 an 1 3 3 3 reste b b a b Q Q a b b 2 (le processus est appliqué jusqu à a n-1 ) 8 57 2 = 28 reste 1 28 2 = 14 reste 0 14 2 = 7 reste 0 7 2 = 3 reste 1 3 2 = 1 reste 1 637 2 = 318 reste 1 318 2 = 159 reste 0 159 2 = 79 reste 1 79 2 = 39 reste 1 39 2 = 19 reste 1 1 2 = 0 reste 1 19 2 = 9 reste 1 9 2 = 4 reste 1 4 2= 2 reste 0 2 2 = 1 reste 0 1 2 = 0 reste 1 d où 57 (10) = 111001 (2) d où 637 (10) = 1001111101 (2)
Conversion entre les bases ( ) Pour la partie entière (F) Partie fractionnaire : MÉTHODE ITÉRATIVE ( ) F a b a b a b a b 1 2 3 m 1 2 3 m bf a b a b a b a b 0 1 2 m 1 1 2 3 m Partie entière Partie fractionnaire F 1 bf a b a b a b a b 0 1 2 m 2 1 2 3 4 m Conversion entre les bases ( ) Exemple : 0,6875 (10) =? (2) 0,6875 2 = 1,375 partie entière = 1 0,375 2 = 0,75 partie entière = 0 0,75 2 = 1,5 partie entière = 1 0,5 2 = 1,0 partie entière = 1 d où 0,6875 (10) = 0,1011 (2) Exemple : 0,8125 (10) =? (2) 0,8125 2 = 1,625 partie entière = 1 0,625 2 = 1,25 partie entière = 1 0,25 2 = 0,5 partie entière = 0 05 0,5 2 = 1,0 partie entière = 1 Partie entière Partie fractionnaire F 2 (le processus est appliqué jusqu à a -m ) d où doù 0,8125 (10) = 0,1101 (2) 9 10 Conversion entre les bases ( ) Conversion entre les bases ( ) La répétition existe aussi en binaire: MÉTHODE ITÉRATIVE ( ) Exemple : 22/7 = 21/7 + 1/7 = 3+1/7 =? (2) 22/7 = 3,142857142857 142857142857 142857... Et en binaire? RÉPÉTITION 1/7 2 = 2/7 0,2857 partie entière = 0 2/7 2 = 4/7 0,5714 partie entière = 0 4/7 2 = 8/7 1,1428 partie entière = 1 1/7 2 = 2/7 0,2857 partie entière = 0 d où 22/7 = 11, 001 001 001 (2) 11 12
Et les nombres négatifs? Un ordinateur représente l information en 0 et en 1 (des bits). Pour représenter le signe moins ( - ), on a pas d autre choix que d utiliser dutiliser un bit supplémentaire REPRÉSENTATION EN COMPLÉMENT À 2 Comment écrire -22 en binaire? Supposons que l on utilise 8 bits. On a 256 valeurs binaires i (de 0 à 255). Pour réserver un bit de signe, on choisit PAR CONVENTION de diviser les valeurs possibles en deux, 128 nombres positifs (0 à 127) et 128 nombres négatifs (-128 à -1). Pour représenter les nombres négatifs on écrit: N en 256 N -3 sera 256 3 = 253-128 sera 256 128 = 128 13 14 15 Reprenons l écriture en binaire. Nous disposons de 8 bits (256 valeurs) partagés en 128 valeurs positives (0 à 127) et 128 valeurs négatives (-128 à -1). Les valeurs positives sont : 000 0000 0000 001 0000 0001 002 0000 0010 003 0000 0011 004 0000 0100...... 123 0111 1011 124 0111 1100 125 0111 1101 126 0111 1110 127 0111 1111 16 Les valeurs négatives sont : -001 1111 1111-002 1111 1110-003 1111 1101-004 1111 1100-005 1111 1011-006 1111 1010...... -122 1000 0110-123 1000 0101-124 1000 010000-125 1000 0011-126 1000 0010-127 1000 0001-128 1000 0000
Conclusions: Le bit le plus significatif (le plus à gauche, noté MSB) est un bit de signe Si le MSB vaut 0, le nombre est positif Exemples: 001 0000 0001 050 0011 0010 100 0110 0100 127 0111 1111 Si le MSB vaut 1, le nombre est négatif Exemples: -001 1111 1111-050 1100 1110-100 1001 1100-127 1000 0001 Conclusions ( ) : Pour trouver la valeur négative d un nombre de manière simple, on inverse les bits (complément à 1) et on ajoute 1: Exemples: 001 : 0000 0001 INVERSE 1111 1110 (+1) 1111 1111 : -001 050 : 0011 0010 INVERSE 1100 1101 (+1) 1100 1110 : -050 100 : 0110 0100 INVERSE 1001 1011 (+1) 1001 1100 : -100 127 : 0111 1111 INVERSE 1000 0000 (+1) 1000 0001 : -127 17 18 Conclusions ( ) : Le chemin inverse est juste aussi, on inverse les bits (complément à 1) et on ajoute 1: Conclusions ( ): Le complément à 2 est cyclique: Exemple (4 bits allant de -8 à +7) : Exemples: -001 : 1111 1111 INVERSE 0000 0000 (+1) 0000 0001 : 001-050 : 1100 1110 INVERSE 0011 0001 (+1) 0011 0010 : 050-100 : 1001 1100 INVERSE 0110 0011 (+1) 0110 0100 : 100-127 : 1000 0001 INVERSE 0111 1110 (+1) 0111 1111 : 127 19 20
Il est possible de choisir i n importe quel nombre de bits. Pour n bit: Exemples: N = 2 n N 1001 (2) =? (10) 1011 (2) =? (10) 0101 (2) =? (10) 11100 (2) =? (10) Source xkcd n 571 11001 (2) =? (10) 00111 (2) =? (10) 1101111 (2) =? (10) 1101010 (2) =? (10) 0010110 (2) =? (10) 21 22 Un peu d arithmétique Pour n+m bit, qu est-ce que ça donne avec partie en virgule fixe: N 0 a a a, a a a n2 1 0 1 2 m 2 ADDITION Nous avions déjà vu comment on additionne (+1) à un nombre L addition de façon générale s effectue de la même manière: Exemples: N = 2 n N 10,01 (2) =? (10) 10,1111 (2) =? (10) 01,01 (2) =? (10) 11,100 (2) =? (10) 11,001 (2) =? (10) 00,111 (2) =? (10) 23 24
ADDITION ( ) ADDITION ( ) Puisque nous limitons la longueur des nombres, on va éliminer la retenue R. Quel impact cela a-t-il sur le résultat? 00110110 0 1 0 1 1 0 54 + 0 0 0 0 1 1 1 1 + 15 01000101 0 0 0 1 0 1 69 1 1 0 0 1 0 1 0 ( 54) + 1 1 1 1 0 0 0 1 + ( 15) 1 1 0 1 1 1 0 1 1 ( 69) 25 26 ADDITION ( ) SOUSTRACTION Quel impact cela a-t-il sur le résultat? ( ) N 1 N 2 = N 1 ( N 2 ) 00110110 0 1 0 1 1 0 54 + 1 1 1 1 0 0 0 1 + (-15) 100100111 0 1 0 0 1 1 1 39 00110110 0 1 0 1 1 0 00110110 0 1 0 1 1 0 54 0 0 0 0 1 1 1 1 + 1 1 1 1 0 0 0 1 15 100100111 0 1 0 0 1 1 1 39 1 1 0 0 1 0 1 0 (-54) + 0 0 0 0 1 1 1 1 + 15 1 1 0 0 1 0 1 0 1 1 0 0 1 0 1 0 ( 54) 1 1 1 1 0 0 0 1 + 0 0 0 0 1 1 1 1 ( 15) 1 1 0 1 1 0 0 1 (-39) 1 1 0 1 1 0 0 1 ( 39) 27 28
LE DÉBORDEMENT Quel impact cela a-t-il sur le résultat? 0100 + 0100 C est quoi? 0100 0 0 4 + 0 1 0 0 + 4 1000 0 0 8 Quel est le problème? 29 30 LE DÉBORDEMENT ( ) LE DÉBORDEMENT ( ) En complément à 2 avec 4 bits, il n y a pas de représentation de +8!!! Lorsque le résultat de l opération n est pas représentable, on parle de DÉBORDEMENT de l opération +/-. Le débordement survient uniquement quand on additionne deux nombres positifs ou deux nombres négatifs. Le débordement peut être facilement détecté, il survient lorsque les deux dernières retenues sont différentes 0 1 0 0 + 0 1 0 0 4 + 4 1 0 0 0 8 1 1 0 0 + 1 0 1 1 ( 4) + ( 5) 0 1 1 1 7 31 32
MULTIPLICATION Un exemple simple (entiers positifs non signés): Quelques exemples MULTIPLICATION ( ) 1101 1 1 13 0 1 1 0 0000 0 0 0 1 1 0 1 0 110100 1 1 0 0 0 0 0 0 0 0 0 6 1001110 0 1 1 1 0 78 1 0 0 0 1 1 1111 1 1 1 = 1 1 0 0 1 1 1001 0 1 = 1 1 1 0 1 1 0111 1 1 = 0 1 0 1 1 1 0101 0 1 = 33 34 DIVISION Un exemple emple simple (entiers positifs non signés): 1001110 0 1 1 1 0 1101 78 6 1 1 0 0 0 0 01110 1 1 0 0 1 1 0 0 0 0 0 1 1 0 1 1 0 1 donne 13 donne 110 0 0 0 reste 0 reste Quelques exemples DIVISION ( ) 1 1 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 1 1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 0 1 0 0 35 36
LE DÉCALAGE Chaque décalage à droite correspond à une division i i par deux : LE DÉCALAGE Chaque décalage à gauche correspond à une multiplication li par deux : 10101101 1 0 1 1 0 1 173,000000 1 0 1 0 1 1 0,1 86,500000 10101101 1 0 1 1,0 1 43,250000 1 0 1 0 1,1 0 1 21,625000 1010,1101 1 0,1 1 0 1 10,812500 1 0 1,0 1 1 0 1 5,406250 1 0,1 0 1 1 0 1 2,703125 10101101 0,1 0 1 1 0 1 2,703125 1 0 1,0 1 1 0 1 5,406250 10101101 1 0,1 1 0 1 10,812500 1 0 1 0 1,1 0 1 21,625000 101011,01 1 0 1 1,0 1 43,250000 1 0 1 0 1 1 0,1 86,500000 1 0 1 0 1 1 0 1 173,000000 37 38 Addition de deux bits (demi-additionneur binaire) A et B : cumulande et cumulateur S : somme R : retenue rn 1 r3 r2 r1 Addition de deux nombres binaires : n1 3 2 1 0 a a a a a b b b b b n1 3 2 1 0 A B S R S AB R AB r s s s s s n n1 3 2 1 0 39 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 A B S R 40 a n-1 b n-1 r n s n-1 r n-1 r 3 binaire complet a 2 b 2 s 2 a 1 b 1 r 2 r 1 s 1 a 0 b 0 s 0 r 0 = 0 0
binaire complet r a b s r i i i i i 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 00 a i b i 01 11 10 0 0 1 0 1 r i 1 1 0 1 0 si ri aibi ri ab i i rab i i i ra i ibi a i b i 00 01 11 10 0 0 0 1 0 r i 1 0 1 1 1 r i 1 ra i i rb i i ai bi s r a b r ab rab ra b i i i i i i i i i i i i i r a b ab r ab a b i i i i i i i i i i r a b r a b r a b i i i i i i i i i r i 1 ra i i rb i i ab i i ou ri ai bi ri ai bi ai bi r ab a b ab i i i i i i i r a b a b i i i i i a i b i 00 01 11 10 0 0 0 1 0 r i 1 0 1 1 1 41 42 a i Circuit d anticipation des retenues («Carry Lookahead Network») b i r i s r a b i i i i r i 1 ri p i gi où p i a i bi (ou bien a i bi ) et g i ab i i r r p g 1 0 0 0 r r p g rp g p g rppg p g 2 1 1 1 0 0 0 1 1 0 0 1 0 1 1 Inconvénient : Délai de propagation des retenues r r a b ab i 1 i i i i i r r p g rppg p g p g rppp g pp g p g 3 2 2 2 0 0 1 0 1 1 2 2 0 0 1 2 0 1 2 1 2 2 r r p p p p g p p p g p p g p p n 0 0 1 2 n1 0 1 2 n1 1 2 n1 2 3 n1 g p p p g p p g p g n4 n3 n2 n1 n3 n2 n1 n2 n1 n1 43 44
Circuit d anticipation des retenues pour un additionneur à 4 bits (avec r 0 =0) g 0 p 1 g 1 r 2 p 2 g 2 r 1 à 4 bits (avec r 0 =0) a 0 a 1 a 2 a 3 b s0 b 2 0 b 1 b 3 s 1 p 3 g 3 r 3 s 2 s 3 g 0 p 1 g 1 p 2 g 2 p 3 g 3 r 4 r 4 Circuit d anticipation des retenues r 1 r 2 r 3 r 4 45 46 Arithmétique binaire : application du complément à deux Réalisation de la soustraction a a a a a b b b bb n1 n2 2 1 0 n1 n2 2 1 0 Unité arithmétique binaire avec commande de l opération b n-1 b 2 b 1 0, addition c 1, soustraction b 0 b n-11 b 2 b 1 b 0 a n-1 a 2 a 1 a 0 a n-1 a 2 a 1 a 0 r n-1 r 3 r 2 r 1 r n-1 r 3 r 2 r 1 r 0 = 1 r 0 r n s n-1 s 2 s 1 s 0 r n s n-1 s 2 s 1 s 0 d détection de débordement 47 48
Comparateur Comparateur a n-1 a 2 a 1 a 0 b n-1 b 2 b 1 b 0 Comparateur : réalisation avec des comparateurs à un bit a 0 b 0 a i b i a n-1 b n-1 s E COMPARATEUR s G E 0 E 1 E i E i+1 E n-1 E n s E s P G 0 COMPARATEUR (UN BIT) G 1 G i COMPARATEUR (UN BIT) G i+1 G n-1 COMPARATEUR (UN BIT) G n s G P 0 P 1 P i P i+1 P n-1 P n s P an1an2 a2a1a0 bn1bn2 b2bb 1 0 1 2 2 1 0 1 2 2 1 0 a a a a a b b b bb 100 si a a a a a b b b bb sesgsp 010 si an an a a a bn bn b bb 001 si n1 n2 2 1 0 n1 n2 2 1 0 Note : E 0 = 1 et G 0 = P 0 = 0 49 50 Comparateur Comparateur E i G i a b E G P E G P i i i i i i1 i1 i1 0 0 1 0 0 1 0 0 a i b i 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 COMPARATEUR (UN BIT) E i+1 G i+1 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 1 0 1 0 0 1 0 0 1 P i P i+1 1 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 0 1 0 1 1 1 0 0 1 0 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 E abe abe ab ab E a b E a b E i 1 i i i i i i i i i i i i i i i i i G i 1 big i ag i i aib ou i ai bigi ab i igi ai bi abab Gab a b Gab i i i i i i i i i i i i P i 1 bp i i aip i ab ou i i abp i i i abp i i i ab i i a b ab Pab a b Pab i i i i i i i i i i i i ( Tous les autres cas sont facultatifs ) 51 52
Comparateur a i b i E i+1 E i G i+1 G i P i P i+1 53