Aller au contenu

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) :

Solution
📋 Texte
         11
    0000 0110
  + 1000 0110
  ____________
  = 1000 1100
🌵 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
📋 Texte
  0000 0110
+
___________
= 0000 0000
Solution
📋 Texte
  1 1111 11
    0000 0110
  + 1111 1010
 ____________
  = 0000 0000
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

📋 Texte
         1
  1111 1001
+ 0000 0001
___________
= 1111 1010

😊 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
  • ❌
  • ✅
  • ❌
  • ❌