Strona 1 z 1

BCD odejmowanie

: 31 gru 2008, o 18:56
autor: spec_u
2 zadania:

144 - 62
i
202 - 114

Wie ktoś jak rozwiazać w kodzie BCD ?:)

BCD odejmowanie

: 1 sty 2009, o 13:29
autor: matshadow

Ostatni "rozdział"

BCD odejmowanie

: 10 lut 2009, o 12:26
autor: usnar
Jak sie odejmuje w BCD to najlepiej zrobić uzupełnienie do 9 (U9).
Uzupełnienie działa tak, że każde 4 bity uzupełnia się do 9, i np jak jest 0 to jego uzupałnienie do 9 to 9, dla 2 jest to 7.
Uzupełniamy do 9 tylko liczbę ujemną.
A teraz twoj przykład (porozdzielam spacjami co 4 bity, żeby było bardziej przejrzyste).
144(10)= 0001 0100 0100(BCD)
62(10)= 0000 0110 0010(BCD)
-62(10)= 1001 0011 0111(BCD)U9

Teraz dodajemy
0001 0100 0100
+1001 0011 0111
---------------
1010 0111 1011
+0110 0000 0110
---------------
1|0000 1000 0001
--------------^

Nastąpiło przeniesienie na najstarszym bicie, trzeba więc dodać tą jedynkę do najmłodszego bitu. Jeżeli tak się stanie oznacza to, że wynikiem jest liczba dodatnia i nie w uzupełnieniu do 9 tylko w kodzie BCD, sprawdźmy to:

0000 1000 0010(BCD)= 0 8 2(10)
144-62=82(10)

Wynik jest prawidłowy.

Jeżeli nie nastąpi przeniesienie na najstarszym bicie oznacza to, że wynik jest liczbą ujemną ALE W UZUPEŁNIENIU DO 9. Trzeba ją wtedy spowrotem zamienić na BCD z U9, czyli ponownie uzupełnić do 9.

Przykład:

8-10=-2(10)

8(10)= 0000 1000 (BCD)
10(10)= 0001 0000 (BCD)
-10(10)= 1000 1001 (BCD)U9

Dodajemy

Jedna uwaga, zawsze trzeba dodać 4 bity jeżeli liczby mają taką samą długość w bitach, na początku do liczby ujemnej trzeba dodać 0000 i uzupełnić do 9, inaczej zapętlicie się i wyjdą bzdury.
Niestety nie znam reguły kiedy to sie robi, ja ide na czuja. Wydaje mi się, że trzeba to robić jak od liczby mniejszej odejmujemy większą (chyba, musicie to sami wyczaić).

0000 1000
+1000 1001
---------
1001 0001 <---- przeniesienie cykliczne, trzeba dodać 6
0000 0110 <---- te zera na poczatku wpisałem bo 6 wchodziła pod pierwsze 4 bity.
---------
1001 0111
9 7 w U9

Nie było przeniesienia na najstarszym bicie więc liczba jest ujemna i w U9, uzupełniamy ją do 9 ponownie:

0000 0010 (BCD)= -2(10)

Prawda, że proste, a ja cały dzień siedziałem i probowałem to wykminić

Jak ktoś chce w pdf to pisać na gg 1621651.