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. 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. 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?