Contenus | Capacités attendues | Commentaires |
---|---|---|
Représentation binaire d’un entier relatif | Évaluer le nombre de bits nécessaires à l’écriture en base 2 d’un entier, de la somme ou du produit de deux nombres entiers. Utiliser le complément à 2. | Il s’agit de décrire les tailles courantes des entiers (8, 16, 32 ou 64 bits). Il est possible d’évoquer la représentation des entiers de taille arbitraire de Python. |
Jusqu’à maintenant, nous avons appris à représenter des entiers naturels en représentation binaire ou hexadécimale. Cependant, dans de nombreux programmes, il est nécessaire d’utiliser d’autres types de nombres comme les entiers relatifs ou les réels. Dans ce chapitre nous allons voir comment coder les nombres entiers relatifs grâce à la méthode des compléments qui permet de coder une plage symétrique d’entiers positifs et négatifs de manière à ce qu’ils puissent utiliser le même algorithme (matériel) pour l’addition sur toute la plage.
La façon la plus simple de procéder serait de réserver le bit de poids fort pour le signe(0 pour positif et 1 pour négatif), et de garder le rester pour la représentation de la valeur absolue du nombre.
Avec un codage utilisant des mots de n bits, on pourrait représenter des nombres entre et .
Par exemple, avec un codage sur 3 bits, des nombres entre -3 et 3:
Représentation binaire | Valeur décimale |
---|---|
000 | +0 |
001 | +1 |
010 | +2 |
011 | +3 |
100 | -0 |
101 | -1 |
110 | -2 |
111 | -3 |
Malheureusement cette représentation possède deux inconvénients. Le premier (mineur) est que le nombre zéro (0) possède deux représentations. L’autre inconvénient (majeur) est que cette représentation impose de modifier l’algorithme d’addition ; si un des nombres est négatif, l’addition binaire usuelle donne un résultat incorrect. Voir l’article de Wikipédia pour plus de détails
Vérifier que 3 - 2 ne donne pas le bon résultat avec cet encodage en binaire.
Cette méthode permet de remédier aux problèmes évoqués ci-dessus.
On utilise un encodage de longueur fixe :
En complément à 2 sur bits, on peut représenter des nombres entre et .
L’entier négatif est codé comme s’il s’agissait de l’entier ou n est la taille du mot.
Il est possible d’appliquer un algorithme simple pour réaliser cette addition en binaire (cette méthode sera désignée comme 2ᵉ méthode par la suite).
Article Wikipédia sur le complément à deux
Utilisons cet encodage sur 3 bits.
001
sur 3 bits.110
111
Les deux méthodes donnent le même résultat:
Avec un codage sur 3 bits, on peut coder des nombres entre et .
Représentation binaire | Valeur décimale |
---|---|
000 | +0 |
001 | +1 |
010 | +2 |
011 | +3 |
100 | -4 |
101 | -3 |
110 | -2 |
111 | -1 |
Pour connaitre le nombre que représente un entier négatif, on effectue la démarche inverse:
Ce qui revient à lui soustraire .
Toujours en travaillant sur 3 bits:
110 - 1 = 101
010
Les deux méthodes donnent le même résultat:
Réalisons le calcul sur trois bits.
011
+110
----
(1)001
On trouve bien car le 4e bit n’est pas prise en compte.
Réalisons le calcul sur trois bits.
010
x110
----
000
010
010
-----
(01)100
On trouve bien sur trois bits .