Kod uzupełnień do 2 (U2)
Transkrypt
Kod uzupełnień do 2 (U2)
Wprowadzenie do informatyki - ć wiczenia Kod uzupełnień do 2 (U2) 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 Wprowadzenie do informatyki - ć wiczenia Plan zajęć n Kod U2 – definicja i konwersja n Zakresy liczb reprezentowanych w kodzie U2 n Arytmetyka w kodzie U2 3 Kod uzupełnień do dwu definicja i konwersja Izabela Szczęch 2 Wprowadzenie do informatyki - ć wiczenia Kod uzupełnień do 2 (U2) § Motywacja 00001110 (+1410) + 1xxxxxxx (-1410) 00000000 (0) 00001110 + 11110010 00000000 prowadzimy obliczenia na 88 -miu bitach, więc pomijamy przeniesienie 1 na 99 -ty bit. § chcemy by najstarszy bit informowało znaku liczby § chcemy tak zapisać -14, aby wykonać powyż sze dodawanie w systemie dwó jkowym bez zastanawiania się czy któ ryś bit jest znakiem czy nie 5 Kod uzupełnień do 2 (U2) 00001110 (+1410) + 11110010 (-1410) 00000000 (0) 28 - 00001110 =100000000 – 00001110 =11110010 § drugi składnik sumy jest uzupełnieniem dwó jkowym liczby 14 zapisanej na 8-miu bitach § Uzupełnieniem dwó jkowym (ang. 2C - Two's Complement Complement)) liczby x zapisanej za pomocą n bitó w nazywamy liczbę ró wną 2n – x(U2) § Kod U2 ułatwia realizację podstawowych operacji arytmetycznych, gdyż nie wymaga oddzielnego obsługiwania bitu znaku (jak to jest w przypadku kodu ZM) 6 Izabela Szczęch 3 Wprowadzenie do informatyki - ć wiczenia Konwersja z kodu U2 na system dziesiętny Wartość dziesiętną liczby w kodzie U2 obliczamy następująco: § cyfry mnoż ymy przez wagi pozycji, na któ rych się znajdują i dodajemy otrzymane iloczyny. Waga bitu znakowego jest ujemna i wynosi (-2n-1).. cn-1cn-2cn-3...c2c1c0 (U2) = cn-1(-2n-1) + cn-22n-2 + ... + c222 + c121 + c020(10 (10)) gdzie, c - cyfra dwó jkowa 0 lub 1 n - liczba bitó w w zapisie liczby 7 Konwersja z kodu U2 na system dziesiętny § Jeśli bit znaku jest ró wny 0 0,, to liczba jest dodatnia i resztę zapisu moż emy potraktować jak liczbę w naturalnym systemie dwó jkowym, bo waga bitu znaku i tak zniknie przy mnoż eniu przez bit znaku czyli 0. Przykład dla zapisu 88-mio bitowego 01101011(U2) = 0*( 0*(--27) + 1*26 + 1*25 + 0*24 + 1*23 + 0*22 + 1*21 + 1*20 = 2 6 + 25 + 23 + 21 + 20 =64 + 32 + 8 + 2 + 1 = 107(10 (10)). 8 Izabela Szczęch 4 Wprowadzenie do informatyki - ć wiczenia Konwersja z kodu U2 na system dziesiętny § Jeśli bit znaku jest ró wny 1 1,, to liczba ma wartość ujemną ujemną.. § Bit znaku ma wagę ((--2n-1), gdzie n oznacza liczbę bitó w w wybranym formacie U2. § Reszta bitó w jest zwykłą liczbą w naturalnym kodzie dwó jkowym. jkowym. Wagę bitu znakowego i wartość pozostałych bitó w sumujemy otrzymując wartość liczby U2. Przykład dla zapisu 88-mio bitowego 11101011(U2 (U2)) = 1*( 1*(--27) + 1*26 + 1*25 + 0*24 + 1*23 + 0*22 + 1*21 + 1*20 =-128+64+32+8+2+1 = -128 + 107 = ((-21)(10). 9 Wyznaczanie liczby przeciwnej w U2 SPOSÓ B 1: § Liczbę przeciwną do x moż na wyznaczać z definicji uzupełnienia dwó jkowego jako 2n – x(U2), gdzie n oznacza liczbę bitó w w przyjętym formacie. Przykład: Rozważ my zapis na czterech bitach: § Niech x = 0101. Uzupełnieniem dwó jkowym jest x(U2) = 24 - 0101 =10000 - 0101 = 1011. § Niech y = 1011. Uzupełnieniem dwó jkowym jest y(U2) = 24 - 1011 = 0101. Otrzymaliśmy zatem, ż e y(U2) = x. Ponieważ jednak y = x(U2), więc ostatecznie moż emy zapisać , ż e (x(U2))(U2 U2)) = x. Zatem uzupełnienie dwó jkowe danej liczby reprezentuje liczbę do niej przeciwną. przeciwną. 10 Izabela Szczęch 5 Wprowadzenie do informatyki - ć wiczenia Wyznaczanie liczby przeciwnej w U2 SPOSÓ B 2: § Zanegować wszystkie bity zapisu liczby w U2 § Do wyniku dodać 1 Przykład: Znajdź liczbę przeciwna do 0101(U2). § Zanegować wszystkie bity: 1010 § Dodać 1: 1010+1=1011 1010+1=1011(U2) Sprawdzenie wyniku: 0101(U2)=4+1=5(10); 1011(U2)=-8+2+1= 8+2+1=--5(10) 11 Wyznaczanie liczby przeciwnej w U2 SPOSÓ B 3: 1. Analizę rozpoczynamy od prawej strony zapisu liczby. 2. Do wyniku przepisujemy kolejne bity o wartości 0 wraz z pierwszym napotkanym bitem o wartości 1. 3. Wszystkie pozostałe bity przepisujemy, zmieniając ich wartość na przeciwną. Przykład: Znajdź liczbę przeciwna do 110011001100 (U2). punkt 11-2: 100 punkt 3: 001100110 001100110100 100(U2) Sprawdzenie wyniku: 110011001100 (U2)=-2048+1024+128+64+8+4= 2048+1024+128+64+8+4=--820(10); 001100110100 (U2)=512+256+32+16+4=820(10) 12 Izabela Szczęch 6 Wprowadzenie do informatyki - ć wiczenia Zadania Zadania: Oblicz wartość dziesiętną następujących liczb 8 8--mio bitowych w reprezentacji U2, a następnie znajdź do nich liczby przeciwne (w reprezentacji U2): a) b) c) d) 10000001 (U2) 11111111(U2) 01111111(U2) 01010100 (U2) 13 Konwersja dodatnich liczb dziesiętnych na zapis U2 § Znajdujemy reprezentację dwó jkową danej wartości liczbowej § Uzupełniamy ją z przodu bitami 0 do długości zadanego formatu kodu U2. Przykład: Wyznaczyć 88-mio bitowy kod U2 dla liczby dziesiętnej 27(10). 27(10) = 16 + 8 + 2 + 1 = 11011(2) = 00011011(U2). 14 Izabela Szczęch 7 Wprowadzenie do informatyki - ć wiczenia Konwersja ujemnych liczb dziesiętnych na zapis U2 SPOSÓ B 1: § Wyznaczamy zapis dwó jkowy modułu liczby § Otrzymany kod dwó jkowy uzupełniamy z przodu w miarę potrzeb zerami do rozmiaru formatu U2 § Wyznaczamy liczbę przeciwną (w dowolny sposó b) Przykład: Wyznaczyć 8-mio bitowy kod U2 dla liczby -45(10). § Wyznaczamy kod binarny modułu liczby: 45(10)=101101(2) § Kod uzupełniamy bitami 0 do wymaganej długości 88-miu bitó w: 00101101 § Wyznaczamy liczbę przeciwną do 00101101(U2): 11010011(U2) § Stąd (-45)(10) = 11010011(U2 (U2)) 15 Konwersja ujemnych liczb dziesiętnych na zapis U2 SPOSÓ B 2: 2: § Jeśli do liczby 2n (n - ilość bitó w w formacie U2) dodamy przetwarzaną liczbę dziesiętną, to zapisany dwó jkowo wynik będzie ró wnoważ ny bitowo (tzn. o takiej samej postaci) kodowi U2 przetwarzanej liczby. Przykład: ad: Wyznaczyć 88-mio bitowy kod U2 dla liczby dziesiętnej -45(10). 28 + ((-45) = 256 - 45 = 211 = 11010011(2). Stąd ((-45)(10) = 11010011(U2) 16 Izabela Szczęch 8 Wprowadzenie do informatyki - ć wiczenia Zakres liczb w kodzie U2 Zakres liczb w kodzie U2 Jaka jest najmniejsza i największa wartości liczby, któ rą da się przedstawić w danym formacie kodu U2? § Liczba największa w U2 powstaje przy bicie znaku ró wnym 0, i przy pozostałych bitach ró wnych 1. § Liczba najmniejsza w U2 powstaje przy bicie znaku ró wnym 1, i przy pozostałych bitach ró wnych 0. Zadania: 1. Wyznacz zakres liczb dziesiętnych reprezentowanych w kodzie U2 na 4, 8 i 16 bitach. 2. Podaj ogó lny wzó r na określający zakres n-bitowych liczb w kodzie U2. 18 Izabela Szczęch 9 Wprowadzenie do informatyki - ć wiczenia Zakres liczb w kodzie U2 § Zakres n-bitowej liczby w kodzie ZM określony jest wzorem: Z(U2) = <<-2n-1, 2n-1 - 1> § W poró wnaniu z kodem znakznak -moduł, kod U2 jest niesymetryczny, bo na n-bitach moż na zapisać w nim o jedną więcej liczbę ujemną niż liczb dodatnich. 19 Poró wnanie kodó w Poró wnanie interpretacji wartości słó w kodu binarnego w ró ż nych systemach zapisu liczb ze znakiem 20 Izabela Szczęch 10 Wprowadzenie do informatyki - ć wiczenia Arytmetyka w kodzie U2 Dodawanie i odejmowanie w U2 § Liczby U2 dodajemy i odejmujemy wg zasad dla naturalnego systemu dwó jkowego. § Przeniesienia poza bit znaku ignorujemy (w rzeczywistości takie przeniesienia czy poż yczki mogą być wykorzystywane przez procesor do dodawania liczb o wielokrotnej precyzji). § Przykłady dla 8-mio bitowego formatu U2: -5 + 100=95 -100 - 5=-105 1 00 1 1 1 0 0 1 11 1 1 0 1 1 + 0 11 0 0 1 0 0 1 0 10 1 1 1 1 1 przeniesienie poza bit znaku ignorujemy Izabela Szczęch - 0 00 0 0 1 0 1 1 00 1 0 1 1 1 22 11 Wprowadzenie do informatyki - ć wiczenia Kod U2 – nadmiar i niedomiar § Ponieważ liczby zapisane w systemie U2 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. w. § Nadmiar (niedomiar) wystąpi, gdy w U2 suma dwó ch liczb dodatnich (ujemnych) daje w wyniku liczbę ujemną (dodatnią). § Nadmiar i niedomiar nie występują przy dodawaniu liczb o przeciwnych znakach § Przykłady dla 8-mio bitowego formatu U2: 100+40=nadmiar -100 + (-40)=niedomiar 0 1 1 0 0 1 0 0 + 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 suma liczb dodatnich dała liczbę ujemną 1 0 0 1 1 1 0 0 + 1 1 0 1 1 0 0 0 0 1 1 1 0 1 0 0 suma liczb ujemnych dała liczbę dodatnią 23 Arytmetyka w kodzie U2 -zadania Zadania: Stosując dwó jkową reprezentację U2 na 88-miu bitach zapisz następujące liczby całkowite i wykonaj działania: a) b) c) d) e) 18 + 20 -30 + ((-25) -20 + 60 120 + 32 -65 + ((-84) 24 Izabela Szczęch 12