Bonjour,
avant tout autre choses sachez que le nombre de bits (case mémoires) que vous utilisez pour coder des nombres n'est pas lié nécessairement au type de codage (GRAY, BCD, S+VA, C1 ou C2). Par contre, il est vrai que lorsque vous choisissez un code, vous définissez, en conséquence, l'étendue des valeurs représentables sur n bits. Voici un tableau qui résume les étendues des valeurs que l'on pourra coder sur n bits selon différence codages :
Type de codage | Étendue des valeurs représentables sur n bits | exemple : n = 5 bits |
Binaire pure (entier non signés) | [0, 2n-1] | [0, 25-1] = [0, 31] |
S+VA | [-(2n-1-1), +(2n-1-1)] | [-(2n-1-1), +(2n-1-1)] = [-(24-1), +(24-1)=[-15, +15]] |
C1 (complément à "1") | [-(2n-1-1), +(2n-1-1)] | [-(2n-1-1), +(2n-1-1)] = [-(24-1), +(24-1)=[-15, +15]] |
C2 (complément à "2") | [-2n-1, +(2n-1-1)] | [-2n-1, +(2n-1-1)] = [-24, +(24-1)=[-16, +15]] |
Comme vous le constatez en haut, l'étendue des valeurs que l'on pourra représenter sur n bits en C1 et S+VA est la même. En C2, une seule valeurs est en plus (-2n-1). Donc l'étendue ne change pas grand chose entre S+VA, C1 et C2. Si vous utilisez n bits, dans les 3 codages vous aurez un bit de signe et n-1 bits pour le reste. Dans le cas du codage en S+VA, les (n-1) bits restant correspondent à la valeur absolue.
Pour comprendre le codage en C1 et C2, je vous met la vidéo que j'ai confectionné ce matin en réponse à une autre question d'un de vos camarades: