Cours Stage - Codage des entiers

Exercice - Codage des entiers

L'énoncé

Soit n = 67, p = 88 et q = -101.


Question 1

Donner la capacité de codage d'un modèle de mémoire à 8 bits en binaire signé.

Calculons la capacité de codage d'un modèle de mémoire à 8 bits en binaire signé.

$\sum_{k=0}^62^k$ = $2^7-1$ = 127

Soit l'encadrement [-127 ; 127], qui correspond aux entiers relatifs pouvant être codé en 8 bits.

 

 

Il est important de différencier la capacité de codage des entiers naturels et relatifs.

Question 2

Coder n, p et q sur 8 bits à l'aide de la méthode du complément à 2.

À l'aide de divisions successives par 2, on obtient que 67 = 01000011 et que 88 = 01011000.

D'autre part 101 = 01100101, déterminons alors -101 à l'aide de la méthode du complément à deux.

101 = 01100101

      10011010 $\rightarrow$ complément à 1

      10011011 $\rightarrow$ addition de 1

on a donc -101 = 10011011

 

Utiliser la méthode du complément à deux.

Question 3

Calculer n + p.

Posons la somme de 67 et 88.

   01000011

+ 01011000

__________

   10011011

 

Poser l'addition.

Question 4

Qu'observez-vous ? Quelle est la raison de ce résultat ?

On peut constater qu'il y a une erreur car le bit de poids fort est égal à 1, ce qui est sensé signifier que le nombre est négatif or ce n'est bien entendu pas le cas. De plus, on obtient la valeur de q, ce qui n'a pas de sens car 67 + 88 $\neq$ -101.

Il y a un "dépassement", c'est à dire que l'on on a obtenu un nombre qui dépasse la capacité de codage d'un modèle de mémoire à 8 bits.

On peut en effet voir que 155, la somme de n et p, n'est pas compris dans l'intervalle [-127 ; 127]

Observer le bit de poids fort.

Question 5

Que faut-il faire pour éviter ce problème ? Refaites alors les questions précédentes.

Il est nécessaire de prendre un modèle de mémoire supérieure à 8 bits, soit 16 bits.

Ainsi on peut calculer la capacité de codage d'un modèle de mémoire à 16 bits en binaire signé :

$\sum_{k=0}^{14}2^k$ = $2^{15}-1$ = 32767

Soit l'encadrement [-32767 ; 32767], qui correspond aux entiers relatifs pouvant être codé en 16 bits.

On a alors 67 = 0000000001000011 et 88 = 0000000001011000.

   0000000001000011

+ 0000000001011000

__________________

   0000000010011011

On constate alors qu'on a bien 0000000010011011 = 155 = 67 + 88.

 

Penser au modèle de mémoire