Entiers relatifs
Note
🤔 Le but est de trouver un moyen, avec des 0 et des 1 de reprĂ©senter un entier nĂ©gatif.
Comment coder â 6 ?
I. Une premiĂšre pisteâïž
On pourrait imaginer utiliser un bit de signe.
đ On convient de travailler sur 8 bits, ce qui est plus simple, et ne change rien Ă la comprĂ©hension du principe.
6 est codé sur 8 bits en binaire par :
Question
6 est codé sur 8 bits en binaire par :
Solution
0000 0110
Question
🤔 On peut imaginer de rĂ©server le bit de gauche (de poids fort) au signe, et de lui donner la valeur 0 pour un signe positif et 1 pour un signe nĂ©gatif.
👉 Avec cette convention, - 6 serait codĂ© sur 8 bits en binaire par :
Solution
1000 0110
Question
Avec cette convention, rĂ©aliser en binaire lâopĂ©ration 6 + (-6) :
🌵 Quel est le problĂšme ?
Solution
đ Le rĂ©sultat de 6 +(- 6) ne donnerait pas 0, mais - 12
II. Recherche de lâopposĂ© dâun entierâïž
Note
💡 On va chercher Ă trouver une reprĂ©sentation de - 6 sur 8 bits, qui respecte le fait que 6 + (- 6 ) = 0
Pour cela, compléter l'addition "à trou" suivante
On trouve donc qu'une reprĂ©sentation de - 6 pourrait ĂȘtre :
1111 1010
Le bon choix
đĄ C'est effectivement cette reprĂ©sentation qui va ĂȘtre choisie. La mĂ©thode est ingĂ©nieuse : le 1 le plus Ă gauche (le bit de poids fort) du rĂ©sultat "disparaĂźt" car on ne dispose que de 8 bits. Le rĂ©sultat devrait ĂȘtre 1 0000 0000, mais seuls les 8 bits contenant 0000 0000 sont conservĂ©s.
Précision
L'opposé d'un entier, est une sorte de "complément à 0". Ici, en fait, nous avons fait un "complément à 1 0000 0000", c'est à dire en décimal à \(2^8\). Dans la pratique, on dit simplement qu'on a fait le complément à 2.
Généralisation sur \(n\) bits
La méthode se transpose sur \(n\) bits. On fait donc un complément à \(2^n\), qui est toujours appelé complément à 2.
III. MĂ©thode du complĂ©ment Ă 2âïž
Comment faire ?
Nous allons voir sur notre exemple, une mĂ©thode qui donne le mĂȘme rĂ©sultat, sans poser l'addition Ă trou.
- Etape 1 : coder 6 sur 8 bits, et donc bien mettre tous les 0 nécessaires à gauche : 0000 0110
- Etape 2 : "inverser les bits" : 1111 1001
- Etape 3 : Ajouter 1
Exemple
đ On retrouve le rĂ©sultat que l'on avait avec l'addition "Ă trou"
Résumé : Pour écrire un entier négatif en complément à 2 sur \(n\) bits :
- Coder la partie positive de l'entier (sa valeur absolue) sur \(n\) bits en binaire, en rajoutant des 0 à gauche si nécessaire.
- Inverser tous les bits.
- Ajouter 1.
Vocabulaire : le complément à 1
👉 Inverser tous les bits s'appelle faire le complĂ©ment Ă 1. Par exemple le complĂ©ment Ă 1 de 1010 1010 est 0101 0101. L'Ă©tape 2 consiste donc Ă faire le complĂ©ment Ă 1.
Notations
Il existe plusieurs notations possibles :
\((-6)_{10}=(11111010)_{c2}=(11111010)_{A2}=(11111010)_{cpt2}\) etc.
Le contexte permet de comprendre qu'il s'agit d'un entier codé en complément à 2.
A vous de jouer 1 !
Utiliser la méthode du complément à 2 pour coder sur 8 bits : - 36
Solution
- 36 sur 8 bits : 0010 0100
- Inversion des bits : 1101 1011
- Ajout de 1 : 1101 1100
đ La rĂ©ponse est donc : 1101 1100
A vous de jouer 2 !
Utiliser la méthode du complément à 2 pour coder sur 8 bits : - 75
Solution
- 75 sur 8 bits : 0100 1011
- Inversion des bits : 1011 0100
- Ajout de 1 : 1011 0101
đ La rĂ©ponse est 1011 0101
Convertir en décimal un nombre donné en complément à 2
Exemple
Le codage sur 8 bits de - 6 en complément à 2 est : 1111 1010
Calculer : \(- 2^7 + 2^6 + 2^5 + 2^4 + 2^3 + 2^1\)
Qu'obtenez-vous?
Solution
\(- 6\)
Faire un calcul analogue pour - 36
Solution
Le codage sur 8 bits de - 36 en complément à 2 est : 1101 1100
\(- 2^7 + 2^6 + 2^4 + 2^3 + 2^2 = - 36\)
Faire un calcul analogue pour - 75
Solution
Le codage sur 8 bits de - 75 en complément à 2 est : 1011 0101
\(- 2^7 + 2^5 + 2^4 + 2^2+1 = - 75\)
Résumé :
Pour convertir un nombre nĂ©gatif codĂ© en complĂ©ment Ă 2 en dĂ©cimal, on procĂšde comme sâil Ă©tait codĂ© en binaire, sauf que le terme correspondant au bit de poids fort est multipliĂ© par -1.
Question
Par exemple le nombre 1010 1010 en complément à 2 est égal en base 10 à :
Solution
\(-2^7 + 2^5+ 2^3+ 2^1 = -128+32+8+2= - 86\)
✏️ Un petit problĂšme :
Essayer de coder sur 8 bits, avec la méthode du complément à 2 : - 135.
Solution
- 135 sur 8 bits : 1000 0111
- Inversion des bits : 0111 1000
- Ajout de 1 : 0111 1001
đ La rĂ©ponse est 0111 1001
😢 Pourquoi ce rĂ©sultat est-il impossible ?
Solution
Le bit de poids fort est Ă 0, ce qui correspond Ă un entier positif.
IV. Entiers que lâon peut reprĂ©senter en complĂ©ment Ă deux :âïž
Sur 8 bits
- Sur 8 bits, le plus petit entier que lâon peut reprĂ©senter est donc :
\(-1 \times 2^7 + 0 \times 2^6+ 0 \times 2^5+ 0 \times 2^4+ 0 \times 2^3+ 0 \times 2^2+ 0 \times 2^1+ 0 \times 2^ 0= -128 = -2^7\)
Il est codé par 1000 0000.
- Sur 8 bits, le plus grand entier que lâon peut reprĂ©senter est donc :
\(0 \times 2^7 + 1 \times 2^6+1 \times 2^5+ 1 \times 2^4+ 1 \times 2^3+ 1 \times 2^2+ 1 \times 2^1+ 1 \times 2^ 0= 127 = 2^7-1\)
Il est codé par 0111 1111.
Résumé :
Avec \(n\) bits, il devient possible de reprĂ©senter \(2^n\) entiers compris entre \(−2^{n−1}\) et \(2^{n−1}−1\).
V. Exercicesâïž
Exercice 1
Trouvez les valeurs de
a) \((1111\ 0111)_{cpt2}\)
b) \((1011\ 0101)_{cpt2}\)
Solution
a) \(- 2^7 + 2^6 + 2^5+ 2^4 + 2^2 + 2^1+ 1=-9\)
b) \(- 2^7 + 2^5+ 2^4+ 2^2 + 1=- 75\)
VI. QCMâïž
1. Que peut-on dire de l'entier relatif \(10100001_2\) codé sur 8 bits en complément à deux ?
- a) Cet entier est pair.
- b) Cet entier est négatif.
- c) Cet entier est positif.
- d) Cet entier vaut \(-23_{10}\).
2. Si 1011 est un entier signé sur quatre bits en complément à 2, alors sa valeur décimale est :
- a) -7
- b) - 5
- c) 5
- d) 7
3. Donner l'écriture de \(-3_{10}\) en complément à deux sur quatre bits :
- a) 0111
- b) 1101
- c) 1011
- d) 1111