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\)]