Soustraction en BCD ?

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

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    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
    1. 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!
    2. comment on soustrait?
  2. 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