Formation I.S.N.

Codage des entiers relatifs

Codage

La notation en complément à 1



Le premier bit est un bit de signe, le reste des bits correspond à la valeur absolue de l'entier, codé comme avant.

Cette méthode présentent cependant plusieurs Inconvénients :
  • deux zéros, dont l'égalité doit être gérée;
  • on perd une valeur représentée;
  • les règles d'addition ne sont pas conservées. Avec ce codage, \( a − b \neq a + (−b) \) et il faut programmer séparément l’addition et la soustraction.

La notation en complément à 2



C’est la solution usuelle pour représenter les entiers relatifs :
Les entiers naturels codés sur n bits sont répartis en deux groupes.
Pour un entier x appartenant à \( [-2^{n-1}, 2^{n-1}-1]\)
  • Si l’entier relatif x est positif ou nul, on le représente comme l’entier naturel x.
  • S’il est strictement négatif, on le représente comme l’entier naturel \(x + 2^n\) .

Ainsi :
  • Le bit de poids fort est à 1 pour un entier négatif.
  • L’addition est la même que pour les entiers positifs, indépendamment du signe.
  • On peut donc utiliser le même circuit pour l’addition et la soustraction.

Par exemple, pour un codage sur 3 bits, on peut représenter \(2^3 = 8\) nombres.
On utilise les 4 premiers pour coder les entiers positifs 0,+1,+2,+3 et les 4 suivants pour coder les quatre entiers négatif -4,-3,-2,-1.

Binaire 000 001 010 011 100 101 110 111
Entier signé 0 +1 +2 +3 -4 -3 -2 -1


L'intervalle de codage :
  • Sur 8 bits (1 octet), l'intervalle de codage est [−128, 127].
  • Sur 16 bits (2 octets), l'intervalle de codage est [−32768, 32767].
  • Sur 32 bits (4 octets), l'intervalle de codage est [−2147483648, 2147483647].
  • D'une manière générale sur n bits, l'intervalle de codage est [\( −2^{n-1} \), \(2^{n-1}-1\)]

Programmation




		
		

Exercices

  • Enoncés
  • Solutions
1.
Déterminer la représentation binaire en complément à 2 sur 8 bits des entiers signés :
  • -54
  • -128
  • -1
  • -2
  • -127

Astuce rapide :
Pour représenter -62 sur 8 bits :
- on convertit 62 en base 2 : 111110
- on complète par des zéros à gauche pour obtenir 8 bits : 00111110
- on inverse tous les bits : 11000001
- on ajoute +1 : 11000010

2.
Quelles plages d’entiers positifs et négatifs peut-on représenter en complément à 2 sur 8 bits ?
Et sur sur 16 bits ?

3.
Déterminer l’entier représenté en complément à 2 sur 8 bits par :
  • 10000001
  • 11111111
  • 11111101
  • 01111110
1.
La représentation binaire de 54 en complément à deux est 00110110 .
La représentation binaire de -1 en complément à deux est 11111111 .
La représentation binaire de -2 en complément à deux est 11111110 .
La représentation binaire de 127 en complément à deux est 01111111 .
La représentation binaire de -127 en complément à deux est 10000001 .
La représentation binaire de -128 en complément à deux est 10000000 .

2.
Sur 8 bits on peut représenter en complément à deux les entiers de \(-2^{8−1}=−128\) à \(2^{8−1}−1=127\).

Sur 16 bits on peut représenter en complément à deux les entiers de \(−2^{16−1}=−32768\) à \(2^{16−1}−1=32767\).

3.
10000001 représente -127.
11111111 représente -1.
11111101 représente -3.
01111110 représente 126.