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

mamiemando Messages postés 34243 Date d'inscription   Statut Modérateur Dernière intervention   7 898
 
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
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
robinson
 
comment on soustrait?
0
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