Kod znak-moduł (ZM) dr inż. Izabela Szczęch WSNHiD Ćwiczenia z wprowadzenia do informatyki Reprezentacja liczb całkowitych Jak kodowany jest znak liczby? Omó wimy dwa sposoby kodowania liczb ze znakiem: kod znak-moduł(zm), kod uzupełnień do dwu (U2). 2 Izabela Szczęch 1
Plan zajęć Kod ZM definicja i konwersja Zakresy liczb reprezentowanych w kodzie ZM Arytmetyka w kodzie ZM 3 Kod znak-moduł - definicja i konwersja Izabela Szczęch 2
Kod znak-modułto kod, w któ rym: najstarszy bit liczby jest bitem znaku wszystkie bity liczby poza najstarszym mają takie same znaczenie jak w naturalnym kodzie binarnym Jeśli przyjmiemy do zapisu liczb format całkowity n-bitowy, to liczby w kodzie znak-modułmają następują cą postać: c n-1 c n-2 c n-3... c 2 c 1 c 0 znak Kod ZM moduł Koncepcyjnie binarny kod ZM jest taki sam jak uż ywany przez nas system dziesiętny, któ ry ró wnież na począ tku ma zapisany znak liczby, a dalej jej wartość czyli moduł Kod znak-modułwystępuje też pod nazwami: ZM, Z-M, SM (Signed Magnitude), S+M 5 Kod ZM Wartość n-bitowej, całkowitej liczby w kodzie ZM obliczamy wg wzoru: w (ZM) = (-1) bit znaku x modułliczby Rozpisują c poszczegó lne bity otrzymujemy w binarnym kodzie ZM: c n-1 c n-2...c 2 c 1 c 0 (ZM) = (-1) cn-1 (c n-2 2 n-2 +... + c 2 2 2 + c 1 2 1 + c 0 2 0 ) (10) gdzie c - cyfra dwó jkowa 0 lub 1, n - liczba bitó w w zapisie liczby Bit znaku: 0 liczba dodatnia, 1 liczba ujemna 6 Izabela Szczęch 3
Konwersja z kodu ZM na system dziesię tny - przykłady 10110111 (ZM) = (-1) 1 x (2 5 + 2 4 + 2 2 + 2 1 + 2 0 ) = - (32 + 16 + 4 + 2 + 1) = - 55 (10) 00110111 (ZM) = (-1) 0 x (2 5 + 2 4 + 2 2 + 2 1 + 2 0 ) = 1 x (32 + 16 + 4 + 2 + 1) = 55 (10) 7 Konwersja z systemu dziesię tnego na kod ZM 1. Jeśli liczba jest dodatnia, to bit znaku ma wartość 0. W przeciwnym razie bit znaku ma wartość 1. 2. Przeliczamy wartość bezwzględną liczby (czyli jej moduł) z zapisu dziesiętnego na dwó jkowy. 3. Otrzymane bity modułu uzupełniamy w miarę potrzeby bitami o wartości 0, aby otrzymać ustaloną w formacie liczbę bitó w dla modułu. 4. Przed bitami modułu wpisujemy bit znaku i w ten sposó b otrzymujemy zapis ZM 8 Izabela Szczęch 4
dopisujemy przed liczbą bit znaku: 13 (10) = 10001101 (ZM) 9 Wprowadzenie do informatyki - ć wiczenia Konwersja z systemu dziesię tnego na kod ZM - przykłady Przekształć poniż sze liczby dziesiętne na kod ZM na 8 bitach 1. liczba 13 (10) liczba jest dodatnia, więc bit znaku = 0 zapisujemy binarnie modułliczby: 13 (10) = 13 (10) = 1101 uzupełniamy zapis do zadanego formatu 13 (10) = 0001101 dopisujemy przed liczbą bit znaku: 13 (10) = 00001101 (ZM) 2. liczba -13 (10) liczba jest ujemna, więc bit znaku = 1 zapisujemy binarnie modułliczby: -13 (10) =13 (10) = 1101 uzupełniamy zapis do zadanego formatu 13 (10) = 0001101 Zakres liczb w kodzie ZM Izabela Szczęch 5
Jaka jest najmniejsza i największa wartości liczby, któ rą da się przedstawić w danym kodzie ZM? Łatwo zauważ yć, ż e w obu przypadkach modułmusi mieć wartość maksymalną, a bit znaku 1 dla wartości najmniejszej i 0 dla wartości największej. Zadania: Zakres liczb w kodzie ZM 1. Wyznacz zakres liczb dziesiętnych reprezentowanych w kodzie ZM na 4, 8 i 16 bitach. 2. Podaj ogó lny wzó r na określają cy zakres n-bitowych liczb w kodzie ZM. 11 Zakres liczb w kodzie ZM Zakres n-bitowej liczby w kodzie ZM określony jest wzorem: Z (ZM) = <-2 n- 1 + 1, 2 n- 1-1> 12 Izabela Szczęch 6
Arytmetyka w kodzie ZM Dodawanie i odejmowanie w ZM Aby otrzymywać poprawne wyniki dodawania czy odejmowania liczb w reprezentacji ZM musimy postępować według regułzebranych w poniż szych tabelkach. Reguły dodawania liczb w kodzie ZM wynik = a (ZM) + b (ZM) znak a (ZM) znak b (ZM) operacja znak wyniku 0 0 dodawanie modułó w 0 1 1 dodawanie modułó w 1 0 1 odejmowanie 1 0 modułu mniejszego od modułu większego znak większego modułu 14 Izabela Szczęch 7
Dodawanie i odejmowanie w ZM Reguły odejmowania liczb ZM wynik = a (ZM) - b (ZM) znak a (ZM) znak b (ZM) operacja znak wyniku 0 0 Znak a odejmowanie (ZM), jeśli moduł ten jest większy modułu mniejszego od modułu b od modułu (ZM). 1 1 Inaczej znak większego przeciwny. 0 1 dodawanie modułó w 0 1 0 dodawanie modułó w 1 15 Dodawanie i odejmowanie w ZM - przykłady Przyjmijmy dwó jkową reprezentację znak-moduł na 8-miu bitach: -5 + 100=95 0 1 1 0 0 1 0 0 1-0 0 0 0 1 0 1 0 1 0 1 1 1 1 1 od większego modułu (czyli liczby 100) odejmujemy mniejszy (czyli 5), a bit znaku ustawiamy zgodnie ze znakiem większego modułu (czyli na 0) -100 + (-5)=-105 1 1 1 0 0 1 0 0 1 + 0 0 0 0 1 0 1 1 1 1 0 1 0 0 1 dodają c liczby o tym samym znaku, dodajemy ich moduły, a bit znaku ustawiamy zgodnie ze znakiem dodawanych liczb 16 Izabela Szczęch 8
Kod ZM nadmiar i niedomiar Ponieważ liczby zapisane w systemie 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ą. 17 Kod ZM nadmiar i niedomiar Przyjmują c dwó jkową reprezentację znak-moduł na 8-miu bitach, wyniki poniż szych działań nie mogą być reprezentowane (występuje nadmiar i niedomiar): 100+40=nadmiar 0 1 1 0 0 1 0 0 0 + 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 przeniesienie na bit znaku -100-40=niedomiar 1 1 1 0 0 1 0 0 0 + 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 przeniesienie na bit znaku 18 Izabela Szczęch 9
Kod ZM podsumowanie Koncepcyjnie prosty, lecz stwarzałpoważ ne problemy przy wykonywaniu operacji arytmetycznych Bit znakowy posiada zupełnie inne znaczenie od pozostałych bitó w i nie uczestniczy bezpośrednio w operacjach arytmetycznych. Niejednoznaczność!!! - wartość 0 posiada dwa słowa kodowe: 0000 oraz 1000. 19 Arytmetyka w kodzie ZM -zadania Zadania: Stosują c dwó jkową reprezentację znak-modułna 8-miu bitach zapisz następują ce liczby całkowite i wykonaj działania: a) 18 + 20 b) -30 + (-25) c) -20 + 60 d) 120 + 32 e) -65 + (-84) 20 Izabela Szczęch 10