Vous êtes sur la page 1sur 18

Représentation binaire des entiers relatifs

Correction

Représentation binaire entiers relatifs


Qu’est-ce qu’un nombre signé
Évaluer le nombre de bits nécessaires
Utiliser le complément à deux
Rappel : Addition de nombres entiers en binaire
Pour additionner deux nombres binaires, on applique la règle suivante :

12 + 12 = 102
Vérifier que la somme de 0111 + 010 vaut bien 1001.
Dans un premier temps, faire le calcul en binaire puis vérifier le résultat en convertissant
les nombres en décimal.

1 1 Retenue En base 10
0 1 1 1 7
1 0 + 2
1 0 0 1 = 9

2
Les nombres signés
La première idée qui peut venir à l’esprit consiste à coder le signe d’un entier relatif sur un bit :

0 : entier positif

1 : entier négatif

Pour conserver une écriture proche de celle que nous connaissons déjà, on utilise le bit de poids
fort comme bit de signe (le bit le plus à gauche).

Exemple : Codage binaire signé sur 4 bits de -2 et +2

Bits de signe
1010 Bits de signe
0010
Ici : -1 Ici : +1
Valeur absolue de l’entier Valeur absolue de l’entier
Ici : 2 Ici : 2

En utilisant la méthode ci-dessus, écrire en binaire les entiers 10 10 et -1010 sur 8 bits

1010 → 0000 10102


Bits de signe
Ici : + Valeur absolue de l’entier en binaire
Ici : 10
Bits de signe
Ici : -
-1010 → 1000 10102

3
Les nombres signés
Compléter le tableau ci-dessous :

Binaire Valeur Binaire Valeur Est-ce que tous les entiers sont codés une seule fois ?
signé sur décimale signé sur décimale
4 bits 4 bits Non, la valeur 0 est codée deux fois. 0000 et 1000
0000 +0 1000 -0
0001 +1 1001 -1 Dans la représentation binaire signé sur 4 bits, quel
0010 +2 1010 -2 est le plus grand nombre pouvant être représenté ?
Généraliser pour un codage binaire signé sur n bits.
0011 +3 1011 -3
En représentation binaire signé sur 4 bits, la valeur
0100 +4 1100 -4 maximum est codé sur 3 bits.
0101 1101 Donc le nombre maximum pouvant être représenté est :
+5 -5 2³ – 1
0110 +6 1110 -6
Un nombre signé sur n bits. La valeur max est 2n-1-1
0111 +7 1111 -7
Dans la représentation binaire signé sur 4 bits, quel est le plus petit nombre pouvant être
représenté ? Généraliser pour un codage binaire signé sur n bits.

Donc le nombre minimum pouvant être représenté est : - (2³ – 1)


Un nombre signé sur n bits. La valeur min est - (2n-1-1)

4
Les nombres signés
Sachant que les informaticiens ont décidé d’affecter au binaire signé sur n bit 100..00 la
valeur -2n-1.

100..00 (n bits) a pour valeur décimale : -2n-1

Donner l’intervalle de valeurs pour un nombre signé sur 4 bits puis sur n bits.

Pour un nombre signé sur 4 bits, l’intervalle de valeur est : [-2 3,+23-1] soit [-8,7]

Pour un nombre signé sur n bits, l’intervalle de valeur est : [-2n-1,+2n-1-1]

La soustraction est la somme d’un nombre positif et d’un nombre négatif. Calculer par addition
binaire binaire 3 – 3. Le résultat binaire signé est-il correct ?

1 1 Retenue En base 10
0 0 1 1 3
1 0 1 0 + -3
1 1 0 1 = -5 ???

Le résultat n’est pas correcte. On aurait dû obtenir 0000.

5
Le complément à deux
La bonne idée
Au lieu de prendre les nombre négatifs en dessous, prenons-les au-dessus.
Comment? En poursuivant le compte avec des entiers naturels.

Ce bits de poids 16, Nous décrétons que le premier bit


n’existe pas.
Ainsi 2 – 2 = 0 se à gauche est le bit de signe et que
code 0010 + 1110 les codes binaires des nombres 8
= 1 0000 soit, sans
le bit inexistant, à 15, dont le premier bit est à 1,
c’est bien 0000. sont le codage de nombres
négatifs.

Lesquels? Le code du complément du nombre


entier à 16. Ainsi, le 15 naturel de code 1111
devient la valeur négative du nombre: 16 – 15 = 1,
soit: –1.
Le bit de poids 16 n'existe pas. C'est lui l'astuce.
En effet 2 + (–2) devient 0010 + 1110 = 1 0000
avec le premier 1 qui tombe dans le vide. on
l'oublie. Ainsi: 0010 + 1110 = 0000. L'opération
est juste.

6 Source : http://villemin.gerard.free.fr/Wwwgvmm/Numerati/BINAIRE/Negatif.htm
Le complément à deux
Le principe

Non
Positif ? Oui

Opposé Binaire
(On abandonne le signe -)

Binaire

Complément
à2

Méthode de Calcul du complément à 2

Inverser les bits Ajouter 1

7
Le complément à deux
Mise en application

On souhaite représenter + 21

Positif ? Oui

Binaire

+ 2110 = 0001 01002

8
Le complément à deux
Mise en application
On souhaite représenter - 21

Non
Positif ?

Opposé 21
(On abandonne le signe -)

Binaire 2110 = 0001 01012

Complément Complément à 2 de :


à2 0001 01012

Inverser les bits 1110 10102

On ajoute 1 + 12

Complément à 2 1110 10112 = -2110

9
Le complément à deux
Comment l’obtenir et vérification
Le codage de -21 en complément à 2 sur 6 bits
25=32 24=16 23=8 22=4 21= 2 20=1
+21 0 1 0 1 0 1
Inversion des bits 1 0 1 0 1 0
Ajouter 1 1
On obtient :
-21 en cpt à 2 -21 1 0 1 0 1 1

On vérifie que 21 – 21 = 0
25=32 24=16 23=8 22=4 21= 2 20=1

Retenue 1 1 1 1 1

21 0 1 0 1 0 1
+ -21 1 0 1 0 1 1
=
0 1 0 0 0 0 0 0

On le perd car on code sur 6 bits et pas sur 7 bits

10
Le complément à deux
Comment le convertir en base 10 ?
Pour convertir un entier codé en binaire en complément à deux vers la base 10, il faut
considérer deux situations :


si le bit de signe vaut 0 : Alors le nombre est positif. Pour connaître sa représentation en
base 10, il suffit de convertir le nombre binaire vers la base 10.


si le bit de signe vaut 1 : Alors le nombre est négatif. Pour obtenir la valeur absolue du
nombre, il faut calculer le complément à 2 (c'est à dire inverser les bits puis ajouter 1) et
convertir le nombre binaire obtenu en base 10.

Exemple : Prenons le cas de l'entier binaire codé en complément à deux sur 6 bits : 101011
C’est un nombre négatif (bit de signe = 1)
25=32 24=16 23=8 22=4 21= 2 20=1
1 0 1 0 1 1
Inversion des bits 0 1 0 1 0 0
Ajouter 1 1
On obtient :
Le cpt à 2 0 1 0 1 0 1

Il ne reste plus qu'à convertir 0101012 en base 10. On obtient : 2110.


On peut conclure que 101011 en binaire en complément à 2 représente -2110.

11
Le complément à deux
Représenter -1210 en complément à deux sur 6 bits
25=32 24=16 23=8 22=4 21= 2 20=1
+12 0 0 1 1 0 0
Inversion des bits 1 1 0 0 1 1
Plus 1 0 0 0 0 1
-12 1 1 0 1 0 0

Calculer sur 8 bits : 20 + (-10) en utilisant la représentation en complément à deux sur 8 bits.
Le résultat est-il correct ?

2010 → 0001 01002


25=32 24=16 23=8 22=4 21= 2 20=1
+10 0 0 1 0 1 0
Inversion des bits 1 1 0 1 0 1
Plus 1 0 0 0 0 1
-10 1 1 0 1 1 0

.../...

12
Le complément à deux
Retenu 1 1 1 1
e
20 0 0 0 1 0 1 0 0
-10 1 1 1 1 0 1 1 0
=10 1 0 0 0 0 1 0 1 0

1010
Le résultat est correct.

On a décidé que 1000 00002 = -28-1. Quel est le plus petit entier négatif que l’on peut
représenter sur 8 bits  en complément à 2 ?

Le plus petit entier négatif est : -2 7 = -128

13
Le complément à deux
Quel est le plus grand entier positif que l’on peut représenter sur 8 bits en complément en
complément à 2 ?
Comme pour les nombres signés, le bit de poids fort est réservé n’est pas utilisé
pour le nombre positif. On code donc sur 7 bits les nombres positifs.

Donc le plus grand entier positif est : 2 7- 1 = 127

Généralisons. Quelles sont les bornes inférieure et supérieur du domaine de représentation des
entiers relatifs en complément à deux sur n bits ?

Pour un codage en complément à deux signé sur n bits :

Valeur max : 2n-1 -1


Valeur min : - 2n-1

L’intervalle de valeur est donc : [-2n-1 , + 2n-1 - 1]

14
Dépassement de capacité

Lorsque deux nombres binaires sont additionnés et qu’il n’y a pas assez de bits pour
afficher le résultat de la somme on dit qu’il y a dépassement de capacité ou overflow.

1. Calculer 125 + 58 en binaire sur 8 bits en complément à deux puis convertir de binaire à
décimal pour vérifier le résultat.
Retenu 1 1 1 1
12510 → 0111 1101cplt2 e
5810 → 0011 1010cplt2 125 0 1 1 1 1 1 0 1
58 0 0 1 1 1 0 1 0
=183 0 1 0 1 1 0 1 1 1

C’est un nombre négatif : bit de signe est à 1.


Le résultat n’est pas correct.
2. Est-ce normal ?

Nous avons vu qu’en complément à deux la plus grande valeur possible sur 8 bits est
27 – 1 soit 127. Or le résultat de l’opération 125+58=183 > 127.

On ne peut pas représenté 183 en complément à deux signé sur 8 bits.

15
Dépassement de capacité

Dans ce calcul : (-6 + -5) , il n’y a pas de


dépassement de capacité.

On remarque que Cn est égale à Cn-1

Dans ce calcul : (125 + 58) , il y a dépassement


de capacité.

On remarque que Cn est différent à Cn-1 0 1 1

Il y a dépassement de capacité lorsque C n et Cn-1 sont complémentaires

16
Bilan
Nombre signé

La première idée qui peut venir à l’esprit consiste à coder le signe d’un entier relatif sur un bit :

0 : entier positif

1 : entier négatif

Pour conserver une écriture proche de celle que nous connaissons déjà, on utilise le bit de poids
fort comme bit de signe (le bit le plus à gauche).

Exemple : Codage binaire signé sur 4 bits de -2

Bits de signe
1010
Ici : -1
Valeur absolue de l’entier
Ici : 2

Nombre de valeurs  différentes :


2n
Intervalle de valeurs :

[ -2n-1 ; 2n-1-1 ]

17
Bilan
Le complément à deux

Comme pour les nombres signés le bits de poids fort (le plus à gauche) indique le signe :

0 : entier positif

1 : entier négatif

On l’appelle le complément à 2 parce que pour obtenir l'opposé d'un nombre, comme 1101, il
faut :
 inverser chaque bit (c'est ce qu'on appelle le complément à 1), ce qui donne 0010,
 puis d'ajouter 1, ce qui fait le complément à 2 => 0011

Nombre de valeurs  différentes :


2n
Intervalle de valeurs :

[ -2n-1 ; 2n-1-1 ]

18

Vous aimerez peut-être aussi