Conversion Décimal/binaire sur n Bit

Résolu
MasterOfPupp -  
 MasterOfPupp -
Bonjour,
j'ai récemment vu quelque part qu'un décimal t ne peut être converti sur n Bits que sur l'intervalle :
-2^(n - 1) + 1 < t < 2(n - 1) - 1 (inférieur ou égal le signe)
Ce n'est pas plutôt -2^(n) + 1 < t < 2(n) - 1, car par exemple on sait tous que 127 peut bien se coder sur 8 bits, alors que selon la première formule la limite maximale à 8 Bits serait 63 (2^(7) - 1).

2 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Le bon intervalle est [-2^(n-1); 2^(n-1)-1]

    Pour reprendre ton exemple avec n=8 bits cela donne bien [-128; 127]
    1
  2. MasterOfPupp
     
    Merci autant pour moi je viens de me rendre compte que je faisais 2^7 = 64 ...
    Et comment tu fais pour coder -128 sur 8 bits, car on ne peut pas le faire avec la méthode du complément à 2.
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      Si, tu peux faire un complément à 2 pour -128.

      Tu prends 128 : 1000 0000
      complément à 1 : 0111 111
      complément à 2 : 1000 000

      Cette valeur est comme les autres, compatibles avec l'addition.
      0
    2. MasterOfPupp
       
      Comme tu viens de le dire tu ne peux pas coder 128 sur 8 bites [-128; 127], donc la méthode ne fonctionne pas non ? (ou alors je mélange tout)

      EDIT : ou alors ça se code sur 9 bits en 110000000
      0
    3. KX Messages postés 19031 Statut Modérateur 3 020
       
      Le 128 = 1000 0000 que tu prends comme référence, c'est du binaire "normal", avec un nombre de bits "infinis", le binaire en complément à 2 c'est le résultat que tu obtiens après les deux étapes.

      Donc tu peux tout à fait avoir -128 en complément à 2.

      De plus comme je l'ai dit, toutes ses valeurs sont compatibles avec l'addition, donc on peut aussi obtenir -128 par addition :

      (-64) + (-64) = -128
      1100 0000 + 1100 0000 = 1000 0000
      0
    4. MasterOfPupp
       
      okay merci c'est bon je vois le principe ^^
      0