Vous êtes sur la page 1sur 35

Arithmétique binaire

(suite)

1
Addition Binaire

• Même principe que l’addition en décimal – addition en


colonne avec report de la retenue
• Additions élémentaires en binaire
– 0+0=0
– 0+1=1+0=1
– 1 + 1 = 0 avec 1 retenue
– 1 + 1 + 1 = 1 avec 1 retenue
• Exemple:

1 Retenues intermédiaires
10001001
+ 11001000

101010001

Retenue (Dépassement de capacité)


2
(Overflow)
Soustraction en binaire

A B A-B Retenue
11011001 Opérande 1

0 0 0 0 10101110 Opérande 2
1 11 1 Retenues
0 1 1 1 intermédiaires
00101011 Résultat
1 0 1 0

1 1 0 0

Table de vérité

3
Multiplication binaire

1011 Opérande 1 (4 chiffres)


A B AxB x
0 0 0 1 1 0 1 Opérande 2 (4 chiffres)
1011
0 1 0 1011 . .
1 0 0 1011 .
111 Retenues intermédiaires
1 1 1 10001111 Résultat (8 chiffres)

Table de vérité

4
Division binaire

11010110 101 Dividende : 1 1 0 1 0 1 1 0


101 101010 Diviseur : 101
00110
Quotient : 101010
101
00111 Reste : 100
101
0100

5
Représentation du signe
• Nombres entiers signés
On réserve un digit binaire pour le signe, les autres bits représentant la
valeur absolue du nombre.
Par convention le bit de signe est le bit de plus fort poids (MSB : Most
Significant Bit) situé le plus à gauche du nombre binaire.
Il vaut 0 lorsque le nombre est positif et 1 lorsqu’il est négatif.

Exemple :

01001001 représente + 7310


11001001 représente - 7310

6
Le complément à un

• Pour obtenir le complément à un d'un nombre binaire, il


faut complémenter chaque bit c'est-à-dire transformer
les "0" en "1" et les "1" en "0
• Exemple 1 :
o +4 décimal 0000 0100 en binaire
o /4 décimal 1111 1011 en complément à un
o Exemple 2 :
o +100 décimal 0110 0100 en binaire
o /100 décimal 1001 1011 en complément à un

7
Le complément à deux

• Dans la représentation en complément à deux, de la même


manière qu'en complément à un, les nombres positifs se
représentent en binaire signé habituel. La différence réside
dans la représentation des nombres négatifs.
• Il existe deux méthodes pour obtenir le complément à deux :
– Le complément à 2 d'un nombre revient à calculer le complément à un du nombre
puis de lui additionner la valeur "1".
• Exemple : C2 de 0001 0101 ? C1 = 1110 1010 C2 = 1110 1010 + 0000 0001 = 1110
1011
– Le complément à 2 d'un nombre consiste à conserver tous les bits à partir de la
droite jusqu'au premier "1" inclus et de complémenter (inverser) tous les bits
suivants
• Exemple : C2 de 1011 0100 ? C2 = 0100 1100 (les 3 bits de poids faibles sont
inchangés)

8
• Représentation en complément
– Complément restreint (Complément à 1)
Il s’obtient par inversion des valeurs des bits constituant le nombre:

Nombre de départ : 01001001


Complément restreint : 10110110

– Complément vrai (Complément à 2)


Il s’obtient en ajoutant 1 au complément restreint :

Nombre de départ : 01001001


Complément restreint : 10110110
+ 1
Complément vrai : 10110111

9
Exemple

• Sur n=4 bits, représenter (-5) dans la base 10 en


complément à deux.

• La valeur absolue de 5 : 0101

• Inversion bit à bit 1010


• On ajoute 1 + 1
1011

10
Exemple

• Sur n=4 bits, représenter (9)10 en complément à


deux.
(9)10= (1001)CA2
Signe négatif (FAUX)
• Nous avons une présentation négatif pour un
entier positif
• Impossible de représenter (9)10 sur 4 bits

11
Règle

• Donc, si on travail sur n bits, l’intervalle


des valeurs qu’on peut représenter en CA2

(n-1) (n-1)
-( 2 ) <= N<= + ( 2 - 1)

12
Exemple

• Opération arithmétique avec n=4


3 0011
+ +
4 0100
------- -----------
7 0111

• Le résultat est positif : (7)10=(0111)2

13
Exemple

• Opération arithmétique avec n=4


3 0011
+ +
5 0101
------- -----------
8 1000

Signe négatif (FAUX)


• Le résultat est NEGATIF, nous avons alors
un dépassement de capacité.

14
Soustraction avec complément |A| > |B|

• Premier cas : |A| > |B|


• Exemple : A = 76 et B = 29 A et B peuvent être représentés en
binaire sur 8 Bits : A= 0100 1100 et B =0001 1101

A – B = A + (-B) Calcul de (–B) par le complément à 2 de B

B= 00011101
Complément à 1: 1 1 1 0 0 0 1 0
+1 :+ 1
Complément à 2 : 1 1 1 0 0 0 1 1

15
Soustraction avec complément |A| > |B|

• A + (-B) =

01001100 A
+ 1 1 1 0 0 0 1 1 -B
Retenue négligée
1 0 0 1 0 1 1 1 1 +47
Signe +

• Le résultat est bien celui attendu (76 – 29 = 47)

16
Soustraction avec complément |A| < ou = |B|

• Deuxième cas : |A| < ou = |B|


• Exemple : A = 29 et B = 76 A et B peuvent être
représentés en binaire sur 8 Bits :
B= 0100 1100 et A =0001 1101
A – B = A + (-B) Calcul de (–B) par le complément à 2 de
B

B= 01001100
Complément à 1: 1 0 1 1 0 0 1 1
+1 :+ 1
Complément à 2: 1 0 1 1 0 1 0 0

17
Soustraction avec complément |A| < ou = |B|

• A + (-B) =

00011101 A
+ 1 0 1 1 0 1 0 0 –B
0 1 0 1 0 0 0 1 - 47
Signe (-)

18
Exercices

• 10101010 + 00110011=
• 11001101 + 11100011=
• 10101010 - 00110011=
• 11001101 - 01100011=
• 10101010 * 00110011=
• 11001101 * 01100011=

19
Nombre réel
• Un nombre réel en décimal est représenté
en décimal sous la forme :
m
d= ∑ 10 * d
i
i
i= -n
• Par exemple:
1 0 -1 -2
35,67:3 * 10 + 5 * 10+ 6 * 10 +5 *
10=3567/100

20
Nombre réel
• En binaire:

b= ∑ 2 * b i
i
i= -n
• Par exemple 110.11 en base binaire:
2 1 0 -1 -2
1 * 2 + 1 * 2+ 0 * 2 +1 * 2+1 * 2

6 3/4

21
Réel en binaire
• Passage d’un nombre réel en base
décimal vers la base binaire:

0,375(10)= ?(2)

0,375 * 2 = 0,75
0,75 * 2 = 1,5
0,5 * 2 = 1,0

0,375(10) = 0,011(2)
22
0,3(10) = ? (2)

0,3 * 2 = 0,6
0,6 * 2 = 1,2
0,2 * 2 = 0,4
0,4 * 2 = 0,8
0,8 * 2 = 1,6
0,6 * 2 = 1,2

0,3 =
0.01001[1001] 23
Codage des réels en binaire
3
563, 8902 = (+)0,5638902 *
10
Signe Mantisse Exposant

• Un codage avec un nombre fixe de bit implique une


présentation fini des variable
– Arrondir la valeur des variable
– Erreur de précision et d’arrondi

24
Codage des réels en binaire
• Un même nombre réel peut être écrit de différentes façons.
Par exemple:

0.1011 *26 = 10.11*2


4
=0.01011* 72

• Pour éviter des représentations différentes du même nombre,


il faut normaliser sous une même forme de présentation :

(+ ou -) e
(+ ou -) 1.bbb…b *
• Comme, sous cette forme, le bit le plus signifiant est toujours
égal 2
a 1, il n'est pas nécessaire de le coder: il est implicite

25
Exemple
• Supposons la représentation suivante:

Signe
Exposant Mantisse

3
+1100.1 = +1.1001 * 2

00111001

26
Problèmes
a) Comment représenter le chiffre zéro ?
 Solution : le nombre zéro est représente avec tous
les bits a 0.
b) Comment représenter un exposant négatif?
• Comme un exposant est un nombre entier signe,
une solution serait de le représenter en complément
a 2. Ce n'est toutefois pas la solution choisie…
• En général, l'exposant est représente de façon
biaisée: une constante, le biais, doit être soustrait
de la valeur dans le champ pour obtenir la vraie
valeur de l'exposant:
champ exposant = exposant + biais

27
Typiquement, la valeur du biais estK-1 2 -1, ou k est le nombre
de bits du champ de l'exposant
K-1
Avec max
E =2 -1,min
E =1 -max
E
• Exemple:
si k=4, la valeur du biais sera 7, l'exposant pourra avoir
3
une valeur entre -2 +1 et3 2 , et la valeur représentée dans
le champ exposant sera exposant+biais
Champ exposant Exposant Champ exposant Exposant
0000 Non 1000 1
normalise
1001 2
0001 -6
1010 3
0010 -5
1011 4
0011 -4
1100 5
0100 -3
1101 6
0101 -2
0110 7
0110 -1
0111 INFINI 28
Exemple
01010101
+0.0
+

5-3=2
00000000 0101
2
+1.0101*
2
0
+1.0 = +1.0000 * 2

00110000

29
Standard IEEE 754
• Forme normalisé selon
1.f × 2e
 f est la partie fractionnaire (ou mantisse)
 e est l’exposant de la puissance de 2
• Attention
 Le premier 1 n’est pas stocké mais est présent
 Un bit supplémentaire stocke le signe (pas de
représentation en complément)
 Deux représentations : simple précision et
double précision
30
Standard IEEE 754
• Précision simple:
 Nombre de bits: 32
 Mantisse sur 23 bits
 Exposant sur 8 bits (biais = 128-1 - 1 = 127)

31
Précision simple
• Exemple:
1 10000000 010010000000000000000000

128-127
- 1. 01001 * 2

-4
- (1+ (0* 2 ) + (1* 2 ) + (0* 2 ) + (0* 2 ) + -5
-1 -2 -3
(1* 2 ) )
*2
- (1+(1/4 ) + (1/32)) * 2

- 2,5625
32
Exercice
Convertir du simple précision vers décimal:
a. 01000001001001000000000000000000
b. 1 10000010 00110000000000000000000
c. 1 10000010 11110110000000000000000
d. 01000000111100000000000000000000
e. 11000010000011100000000000000000
f. 0 10000010 11000000000000000000000
Quelle est la représentation binaire de chaque nombre
décimale suivants :
a. 3.15
b. -123.75
c. 6.125

33
Double précision
• Double précision (64 bits)
 Signe : 1 bit
 Exposant : 11 bits
 Biais : 1023
 Mantisse : 52 bits

34
Exercice
• Trouver le nombre à virgule correspondant
à:

a) 110001000110100100111100001110000000000000000
0000000000000000000

35

Vous aimerez peut-être aussi