BCD odejmowanie

spec_u
Użytkownik
Użytkownik
Posty: 40
Rejestracja: 17 lis 2007, o 18:45
Płeć: Mężczyzna
Lokalizacja: Katowice
Podziękował: 5 razy
Pomógł: 1 raz

BCD odejmowanie

Post autor: spec_u »

2 zadania:

144 - 62
i
202 - 114

Wie ktoś jak rozwiazać w kodzie BCD ?:)
matshadow
Użytkownik
Użytkownik
Posty: 941
Rejestracja: 17 gru 2007, o 21:48
Płeć: Mężczyzna
Lokalizacja: Kingdom Hearts
Podziękował: 6 razy
Pomógł: 222 razy

BCD odejmowanie

Post autor: matshadow »


Ostatni "rozdział"
usnar
Użytkownik
Użytkownik
Posty: 1
Rejestracja: 10 lut 2009, o 11:52
Płeć: Mężczyzna

BCD odejmowanie

Post 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.
ODPOWIEDZ