1. Opis teoretyczny arytmetyki systemów dwójkowych.
a) NKB
Zasady arytmetyki w systemie binarnym są identyczne jak w dobrze nam znanym systemie dziesiętnym. Zaletą arytmetyki binarnej jest jej prostota, dzięki czemu można ją tanio realizować za pomocą układów elektronicznych.
Poniżej opisujemy zasady wykonywania podstawowych działań arytmetycznych wraz z odpowiednimi przykładami.
Do wykonywania dodawania niezbędna jest znajomość tabliczki dodawania, czyli wyników sumowania każdej cyfry z każdą inną. W systemie binarnym mamy tylko dwie cyfry 0 i 1, zatem tabliczka dodawania jest niezwykle prosta i składa się tylko z 4 pozycji:
Dodawanie Sumowane liczby zapisujemy jedna pod drugą tak, aby w kolejnych kolumnach znalazły się cyfry stojące na pozycjach o tych samych wagach (identycznie postępujemy w systemie dziesiętnym zapisując liczby w słupkach przed sumowaniem): Sumowanie rozpoczynamy od ostatniej kolumny. Sumujemy cyfry w kolumnie Jeśli wynik sumowania jest dwucyfrowy (1 + 1 = 10), to pod kreską zapisujemy tylko ostatnią cyfrę 0, a 1 przechodzi do następnej kolumny - dodamy ją do wyniku sumowania cyfr w następnej kolumnie Jeśli w krótszej liczbie zabrakło cyfr, to dopisujemy zera. Pamiętajmy o przeniesieniach. Odejmowanie Odejmując 0 - 1 otrzymujemy wynik 1 i pożyczkę (ang. borrow) do następnej pozycji. Pożyczka oznacza konieczność odjęcia 1 od wyniku odejmowania cyfr w następnej kolumnie. Identycznie postępujemy w systemie dziesiętnym, tyle że tam jest to o wiele bardziej skomplikowane. Obie liczby umieszczamy jedna pod drugą tak, aby ich cyfry znalazły się w kolumnach o tych samych wagach: Odejmowanie rozpoczynamy od cyfr ostatniej kolumny. Wyniki zapisujemy pod kreską Według tych zasad kontynuujemy odejmowanie cyfr w pozostałych kolumnach. Pamiętaj o pożyczkach! Jeśli w krótszej liczbie zabraknie cyfr, to możemy kolumny wypełnić zerami: b) BCD Ponieważ liczby w kodzie BCD nie są naturalnymi liczbami dwójkowymi, zatem nie można nad nimi wykonywać normalnych działań arytmetycznych Po wykonaniu standardowej operacji nad liczbami w kodzie BCD należy sprawdzić i w razie potrzeby skorygować wynik. Dla dodawania i odejmowania korekcja będzie potrzebna wtedy, gdy dana grupa bitów reprezentujących cyfrę dziesiętną ma wartość większą od 9 (binarnie 1001). W takiej sytuacji do grupy tej należy dodać (dla odejmowania odjąć) wartość binarną 0110 (dziesiętnie 6). Korekcja musi również wystąpić, gdy w trakcie dodawania wystąpiło przeniesienie (przy odejmowaniu pożyczka) do sąsiedniej grupy bitów c) ZM Musimy przyjąć dodatkowe założenia (o ile nie chcemy zmieniać dobrych zasad arytmetyki dwójkowej). Przede wszystkim w działaniach uczestniczą tylko moduły liczb. Bity znaków pełnią różne funkcje decyzyjne. Ponieważ liczby zapisane w systmie ZM posiadają ustalony format(ilość bitów jest stała), to przy wykonywaniu operacji arytmetycznych może dochodzić do nadmiarów (wynik większy niż można przedstawić za pomocą dostępnych bitów modułu) lub niedomiarów. Przy dodawaniu i odejmowaniu wg opisanych reguł dla liczb ZM nadmiar(niedomiar) można wykryć, jeśli wystąpiło przeniesienie(lub pożyczka) na pozycję znakową. 2. 3 Przykłady operacji arytmetycznych a) NKB
10010110 + 10010011 = 100101001 L(100101001) = 256 + 32 + 8 + 1 = 297 150 + 147 = 297
10101010 + 10010110 = 10100000 L(10100000) = 256 + 64 = 320 170+150 = 320
11001000 + 10101010 = 101110010 L(101110010) = 256 + 64 + 32 + 16 + 2 = 370 200 + 170 = 370 b) BCD 1 3 1 = 0001 0011 0001 1 4 7 = 0001 0100 0111 0001 0011 0001 + 0001 0100 0111 = 0010 0111 1000 0010 = 2 0111 = 7 1000 = 8 131 + 147 = 278 1 4 7 = 0001 0100 0111 1 3 1 = 0001 0011 0001 0001 0100 0111 – 0001 0011 0001 = 0000 0001 0110 0000 = 0 0001 = 1 0110 = 6 147 – 131 = 16 1 3 1 = 0001 0011 0001 1 2 0 = 0001 0010 0000 0001 0011 0001 – 0001 0010 0000 = 0000 0001 0001 0000 = 0 0001 = 1 0001 = 1 131 – 120 = 11 c ) ZM
0 1100100 + 0 1010000 = 0 101101000 L(0 101101000) = 256 + 64 + 32 + 8 = 360 200 + 160 = 360 200 = 0 11001000 160 = 0 10100000 0 11001000 – 0 10100000 = 0 00101000 L(0 00101000) = 32 + 8 = 40 200 – 160 = 40
0 10101010 – 0 10010110 = 0 00010100 L(0 00010100) = 16 + 4 = 20 170 – 150 = 20 |
---|