Soustraction en BCD ?

wremacle -  
 robinson -
Bonjour,

J'aimerai savoir comment faire une soutraction en BCD ?
A vrai dire je ne connais pas grand chose du BCD, si vous avez des sites n'hésitez pas !

Je sais qu'il faut faire +6, mais c'est un peu près tout :/

Merci de vos réponses !

2 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    BCD = Binary coded decimal.
    Tu codes par groupes de 4 bits un nombre decimal (donc de 0 à 9) et non un nombre hexadecimal (0 à 15 ie 0 à F)
    0000 -> 0
    0001 -> 1
    0010 -> 2
    0011 -> 3
    0100 -> 4
    0101 -> 5
    0110 -> 6
    0111 -> 7
    1000 -> 8
    1001 -> 9
    1010 -> A en hexa mais pas de sens en bcd
    1011 -> B en hexa mais pas de sens en bcd
    1100 -> C en hexa mais pas de sens en bcd
    1101 -> D en hexa mais pas de sens en bcd
    1110 -> E en hexa mais pas de sens en bcd
    1111 -> F en hexa mais pas de sens en bcd

    En fait 15 c'est 10+5 donc ca devient en BCD (deux chiffres donc deux fois 4 bits) :
    0001 0101

    Le fameux 6 doit servir à assurer les 6 valeurs qui n'ont pas de sens en bcd pour faire directement une soustraction bit à bit, mais il faudrait vérifier pour en être sûr.

    Pour plus de précisison google est ton ami

    Bonne chance
    0
    1. wremacle
       
      Merci de votre réponse!

      En gros si je veux faire une addition de ce type:

      26+45=71
      
      0010 0110
      0100 0101
      ------------
      0110 1011
                0110
      -----------
      0111 0001 => 71
      


      Jusque la je comprend parfaitement!
      Lorsque le résultat est > 9 on ajoute 6.
      Mais pour une soustraction comment faire ?

      45-26=19
      
      0100 0101
      0010 0110
      ------------
      0001 1111
      -         0110
      -----------
      0001 1001 => 19
      


      Donc ici encore une fois lorsque le résultat est > 9 on n'additionne pas mais on soustrait 6 du résultats, et apparemment ca marche !

      Merci de ton aide je pense avoir compris, si il y à une erreur n'hésitez pas!
      0
    2. robinson
       
      comment on soustrait?
      0
  2. crabs Messages postés 909 Statut Membre 507
     
    Salut,
    L'ajout ou la suppression de 6 ne sert que si il y a propagation de la retenue
    sur un groupe de 4 bits (supérieur à 10)
    exemple pour l'addition
    1+1 = 2
      0001
    + 0001
    -------
      0010 -> pas besoin de 6
    1+9 = 10
      0001
    + 1001
    ------
      1010 > 10 donc + 6
    + 0110
    ------
    1 0000 = 10 en BCD
    

    -1