Écriture d’un entier relatif
Nous avons vu comment écrire un entier dans différentes bases. Nous allons nous concentrer sur la base 2 qui est utilisée dans les systèmes informatiques.
Addition en binaire
Une addition en binaire se fait de la même façon qu’en décimal.
1) Additionnons les deux nombres binaires suivants : 11001011 et 01011100
100100111
2) Convertissez puis additionnez 12 et 43 en binaire.
1210 = 11002
4310 = 1010112
1100 + 101011 = 1101112 = 5510
Le binaire signé
Définition
Pour représenter un entier relatif, la solution qui peut paraître la plus simple serait de garder le premier bit pour le signe (1 pour négatif et 0 pour positif) et les suivants pour la valeur absolue.
3) Essayons d’écrire -11 sur 8 bits de cette façon.
-1110 = 100010112
4) Quel est alors l’intervalle qu’il est possible d’écrire sur 8 bits ? Comparer à l’intervalle du binaire non-signé sur 8 bits également.
-127 à 127
Problèmes
5) Pour se rendre compte des problèmes de cette représentation, ajoutons 11 et -11 en binaire signé sur 8 bits. Que remarquez-vous ?
-1110 = 100010112
1110 = 000010112
1110 - 1110 = 000010112 + 000010112 = 100101102 = -2210
La somme ne fait pas zéro !
6) Donner les deux façons d’écrire le zéro :
010 = 000000002 = 100000002
Pour ces raisons, le binaire signé n’a presque jamais été utilisé. On utilise le complément à 2.
Complément à 2
Pour écrire un entier négatif en complément à 2, il faut suivre trois étapes :
- on écrit l’entier positif opposé en binaire ;
- on inverse tous les 1 et les 0 ;
- on ajoute 1.
Ainsi, un entier négatif commence aussi par un 1.
Pour trouver la valeur d'un entier négatif en complément à 2, il faut suivre trois étapes :
- on inverse tous les 1 et les 0 ;
- on ajoute 1.
- on obtient alors l’entier positif opposé en binaire ;
7) Prenons l’exemple de -11 sur 8 bits :
11 = 00001011
11110100 # On inverse les 1 et les 0
11110101 # On ajoute 1
1110 - 1110 = 0
8) Ajoutons 11 à -11 :
00001011 # 11
+11110101 # -11
--------
100000000
00000000 # 0 car le 9e bits n'existe pas
1110 - 1110 = 0
Tout va bien !
9) Quel est le plus grand entier positif que l’on peut écrire sur 8 bits ?
011111112 = 12710
10) Que vaut 10000000 ?
10000000
01111111 # On inverse les 1 et les 0
10000000 # On ajoute 1, on obtient 128
Donc 100000002 = -12810
11) On complète alors le tableau récapitulatif ci-dessous :
Base 10 | Complément à 2 sur 8 bits |
---|---|
127 | |
126 | |
… | |
2 | |
1 | |
0 | |
-1 | |
-2 | |
… | |
-127 | |
-128 |
Base 10 | Complément à 2 sur 8 bits |
---|---|
127 | 01111111 |
126 | 01111110 |
… | … |
2 | 00000010 |
1 | 00000001 |
0 | 00000000 |
-1 | 11111111 |
-2 | 11111110 |
… | |
-127 | 10000001 |
-128 | 10000000 |
12) Donner l’écriture en complément à 2 sur 8 bits de -38.
38 = 00100110
11011001 # On inverse les 1 et les 0
11011010 # On ajoute 1
-3810 = 110110102
13) Ajouter 89 à -38 en complément à 2 et vérifier le résultat.
01011001 # 89
+11011010 # -38
--------
100110011
00110011 # 51 car le 9e bits n'existe pas
8910 - 3810 = 5110
Tout va bien !
14) Quels sont le plus grand entier positif et le plus petit entier négatif que l’on peut écrire en complément à 2 sur 16 bits ?
15) Convertir le complément à deux 100100002 en décimal.
16) Convertir le complément à deux 000100002 en décimal.