Kodowanie U2 (liczby całkowite)
Transkrypt
Kodowanie U2 (liczby całkowite)
Temat: Kodowanie informacji za pomocą bitów (liczby ujemne całkowite) Wiemy jak przedstawić liczbę w naturalnym kodzie binarnym (NKB). Ale możemy tak zakodować tylko liczbę naturalną. Jak zakodować za pomocą bitów liczbę ujemną (całkowitą)? Nie możemy w tym celu używać innych symboli niż 0 i 1. Najpopularniejszym kodem używanym w tym celu jest kod U2 (uzupełnień do dwóch) W kodzie U2 liczba na pierwszym bicie (z lewej) może mieć: - jedynkę (ujemna), - lub zero (dodatnia). Liczba dodatnia 0 1 0 1 0 1 1 1 Liczba ujemna 1 1 0 1 0 1 1 1 Liczba dodatnia 0 1 0 1 0 1 1 1 = 87(U2) W tym przypadku wartość liczby jest taka sama jak w NKB. Liczba ujemna 1 1 0 1 0 1 1 1 = ....(U2) Jaką wartość będzie miała liczba gdy zamiast zera na pierwszej pozycji wpiszemy jedynkę? Na pewno ujemną, ale nie będzie to -87. Liczba ujemna 1 1 0 1 0 1 1 1 7 6 5 4 3 2 1 2 2 2 2 2 2 2 2 0 = ....(U2) Liczba ujemna w kodzie U2 1 1 0 1 0 1 1 1 7 6 5 4 3 2 = -41(U2) -2 +2 +2 +2 +2 +2 +2 +2 1 0 1·(-2 ) + 1·2 + 0·2 + 1·2 + 0·2 2 1 0 + 1·2 + 1·2 + 1·2 = = -128+64+16+4+2+1 = -41 7 6 5 4 3 Liczba dodatnia w kodzie U2 0 1 0 1 0 1 1 1 7 6 5 4 3 2 = 87(U2) -2 +2 +2 +2 +2 +2 +2 +2 1 0 0·(-2 ) + 1·2 + 0·2 + 1·2 + 0·2 2 1 0 + 1·2 + 1·2 + 1·2 = = 64+16+4+2+1 = 87 7 6 5 4 3 Zad. Zamień na wartość dziesiętną liczbę w kodzie U2 zapisaną na jednym bajcie. Zad. Liczbę w kodzie U2 zapisano na jednym bajcie. Jaką maksymalną wartość może ona przyjąć? Maksymalna wartość w kodzie U2 (na jednym bajcie) 0 1 1 1 1 1 1 1 7 6 5 4 3 2 = 127(U2) -2 +2 +2 +2 +2 +2 +2 +2 1 0 0·(-2 ) + 1·2 + 1·2 + 1·2 + 1·2 2 1 0 + 1·2 + 1·2 + 1·2 = = 64+32+16+8+4+2+1=127 7 6 5 4 3 Zad. Liczbę w kodzie U2 zapisano na jednym bajcie. Jaką minimalną wartość może ona przyjąć? Minimalna wartość w kodzie U2 (na jednym bajcie) 1 0 0 0 0 0 0 0 7 6 5 4 3 2 = -128(U2) -2 +2 +2 +2 +2 +2 +2 +2 1 0 1·(-2 ) + 0·2 + 0·2 + 0·2 + 0·2 2 1 0 + 0·2 + 0·2 + 0·2 = -128 7 6 5 4 3 1 0 0 0 0 0 0 0 = -128(U2) 0 1 1 1 1 1 1 1 = 127(U2) Przedział -128...127 8 zawiera 2 =256 różnych wartości Zad. Liczbę w kodzie U2 zapisano na dwóch bajtach. Jaką maksymalną wartość może ona przyjąć? Maksymalna wartość w kodzie U2 (na dwóch bajtach) 16 bitów 0 1 ... ... ... ... ... 1 -2 15 +2 14 +2 0 0111111111111111(U2)=32767 Zad. Liczbę w kodzie U2 zapisano na dwóch bajtach. Jaką minimalną wartość może ona przyjąć? Minimalna wartość w kodzie U2 (na dwóch bajtach) 16 bitów 1 0 ... ... ... ... ... 0 -2 15 +2 14 +2 0 1000000000000000(U2)=-32768 Na dwóch bajtach (16 bitach) w kodzie U2 możemy zapisać wartości z przedziału -32768 ... 32767 Na dwóch bajtach (16 bitach) w kodzie U2 możemy zapisać wartości z przedziału 15 15 -2 ... 2 -1 Na n bitach w kodzie U2 możemy zapisać wartości z przedziału n-1 n-1 -2 ... 2 -1 Zad. Liczbę w kodzie U2 zapisano na czterech bajtach. Jaką maksymalną i minimalną wartość może ona przyjąć? Zad. Zamień na wartość dziesiętną liczbę w kodzie U2 zapisaną na dwóch bajtach. Uwaga! W kodzie U2 kluczową informacją jest liczba bitów, na których zapisana jest wartość. Jak zamienić liczbę z systemu dziesiętnego na zakodowaną w U2? (pierwszy sposób) Dla liczby dodatniej postępujemy analogicznie jak w kodzie NKB. Uważamy tylko na to, aby nie przekroczyć wartości maksymalnej. Dla liczby ujemnej n liczymy wartość: 2 -|x|, gdzie n – liczba bitów, x – liczba ujemna do przekształcenia. Potem postępujemy analogicznie jak w kodzie NKB. n 2 -|x|, dla x<0 xU2 = x, dla x≥0 n – liczba bitów, Dalej kodujemy tak jak w NKB Jak zamienić liczbę z systemu dziesiętnego na zakodowaną w U2? (drugi sposób) Przykład: -41 = ......................(U2) Liczbę bez znaku minus zamieniamy zgodnie z kodowaniem NKB 0 0 1 0 1 0 0 1 7 6 5 4 3 2 = 41(NKB) +2 +2 +2 +2 +2 +2 +2 +2 1 0 0·2 + 0·2 + 1·2 + 0·2 + 1·2 2 1 0 + 0·2 + 0·2 + 1·2 = = 32+8+1= 41 7 6 5 4 3 Dokonujemy negacji bitów (zamieniamy bity 0 na 1, 1 na 0) 0 0 1 0 1 0 0 1 7 6 5 4 3 2 +2 +2 +2 +2 +2 +2 +2 +2 1 0 1 1 0 1 0 1 1 0 7 6 5 4 3 2 +2 +2 +2 +2 +2 +2 +2 +2 1 0 Do otrzymanej wartości dodajemy 1 1 1 0 1 0 1 1 0 7 6 5 4 3 2 +2 +2 +2 +2 +2 +2 +2 +2 1 1 1 0 1 0 1 1 1 7 6 5 4 3 2 = -41(U2) -2 +2 +2 +2 +2 +2 +2 +2 1 0 0 Jak komputer dodaje i odejmuje liczby w kodzie U2? 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 +1 1 1 0 0 1 0 1 0 1 1 0 0 0 1 0 = 125(U2) = -27(U2) = 98(U2) Więcej informacji: Podręcznik: strona 18-21