dr Anna Kwiatkowska Instytut Informatyki Kodowanie informacji dr Anna Kwiatkowska Instytut Informatyki
czy też kodzie heksadecymalnym Kodowanie informacji Przedstawiając liczbę dziesiętną w systemie binarnym czy też heksadecymalnym należy pamiętać, że w dalszym ciągu jest to ta sama liczba lecz przedstawiona za pomocą innego zestawu znaków Możemy więc mówić o kodzie binarnym czy też kodzie heksadecymalnym
Zasada tworzenia kodu Zbiór symboli B Zbiór symboli A A2 B2 A1 B1 A3
Kodowanie liczb 1000101 Liczby binarne Liczby dziesiętne 69 Liczby heksadecymalne 45
Jak wprowadzić do komputera informacje tekstowe? do przechowywania i przetwarzania danych przez układy elektroniczne komputera używany jest system binarny należy przedstawić tekst za pomocą liczb czyli jednoznacznie przyporządkować literom i innym znakom alfanumerycznym - liczb (numerów) w ten sposób powstał w 1965 r. kod ASCII (American Standard Code for Information Interchange)
ASCII kod jest jawny i używany przez wszystkich użytkowników i twórców oprogramowania jest to kod 7 bitowy, a więc możemy za jego pomocą przedstawić 27 czyli 128 znaków w 1981 r. IBM wprowadził rozszerzony do 8 bitów kod, co pozwala na przedstawienie 256 znaków (w tym znaki specjalne, graficzne, matematyczne i diakrytyczne znaki narodowe)
Fragment tabeli kodu ASCII Znak Kod dzies. Kod binarny A 65 01000001 a 97 00110001 B 66 01000010 b 98 00110010 C 67 01000011 c 99 00110011 K 75 01001011 k 107 01101011 L 76 01001100 l 108 01101100 ź 171 10101011 Ż 189 10111101 ¦ 179 10110011 Ă 198 11000110 + 188 10111100 - 196 11000100
Piszemy w kodzie ASCII A l a 65 97 108 01000001 00110001 01101100 65 97 108 dziesiętnie 01000001 00110001 01101100 binarnie
Kod UNICODE 256 znaków alfanumerycznych nie dawało możliwości zakodowania znaków diakrytycznych wielu języków np.: japońskiego, arabskiego, hebrajskiego itp. odpowiedzią jest kod nazywany UNICODE o długości 16 bitów dla każdego znaku, to daje już możliwość zakodowania 216 czyli 65536 znaków
Kodowanie w praktyce Jednostka centralna 0110010
Jednostki informacji 1kbit [Kb]=210b=1024 bity 1Mbit[Mb] =1024 Kb= 1048576 bity 1 byte=8 bitów 1kB =210bajtów=1024 B 1MB=1024 KB=1048576 B NIE TYSIĄC!!!!
Reprezentacja liczb całkowitych w komputerze liczby przechowywane są w pamięci lub w rejestrach procesora o ustalonej liczbie pól, np. 8 lub 16 pojawia się problem przepełnienia - gdy liczba jest zbyt duża, by móc ją zapisać przy pomocy np. 8 bitów musi być też rozstrzygnięte, jak zapisywać liczby ujemne do zapisu liczb ujemnych używamy notacji nadmiarowej lub notacji dopełnienia 2
Notacja nadmiarowa Przy zapisie w tej notacji wszystkie liczby o określonej długości bitów, postępuje się następująco wybieramy długość bitową liczb, np. 4 zapisujemy wszystkie łańcuchy bitowe o wcześniej ustalonej długości bitów w kolejności rosnącej (czyli: 0000, 0001, 0010, 0011, itd.)
Notacja nadmiarowa łańcuch, w którym ustawiony (tzn. ma wartość"1") bit jest najstarszym bitem (tzn. znajduje się w pierwszej pozycji po lewej stronie), a pozostałe bity są nie ustawione (równe "0") przyjmujemy jako wartość zero (czyli 1000) kolejne łańcuchy mają wartości 1, 2, 3..., a poprzednie -1, -2, itd.
Notacja nadmiarowa wszystkie 3-bitowe liczby binarne w notacji nadmiarowej:
Reprezentacja liczb zmienno-przecinkowych Chcąc zapisać liczbę zmiennoprzecinkową w postaci binarnej, najpierw musimy zapisać ją w postaci ułamka binarnego (np. 2.1, to 10.10 binarnie) Następnie ustalamy, o ile miejsc musimy przesunąć kropkę ułamkową, aby znalazła się na pierwszym miejscu Ilość ta będzie naszą cechą
powstałą liczbę nazywamy mantysą i zapisujemy jako ciąg cyfr bez kropki następnie zapisujemy kolejno bit określający znak liczby (0=+, 1 =-), następnie cechę, a zaraz po niej mantysę
W przypadku 10.10 (b) przesuwamy kropkę o 2 miejsca w lewo, więc cecha wynosi 2 <=> 010 W tym przypadku mantysa to 1010
Przykład: Umówmy się, że nasza liczba będzie przechowywana w np. jednym bajcie Na mantysę będą przeznaczone 4 bity, a na cechę tylko 3 Mamy bajt danych 10111100, jaka to liczba?? Wiemy, że liczba zmiennoprzecinkowa, składa się z trzech części. Pierwszy bit (1) oznacza znak liczby - nasza liczba jest ujemna
Cztery ostatnie cyfry, to wartość liczby zapisana jako część ułamkowa na prawo od kropki ułamkowej - w przypadku naszej liczby czytamy: .1100 Pozostałe 3 bity (od drugiego do czwartego) to wykładnik (cecha), zapisany w notacji nadmiarowej, który mówi nam, o ile musimy przesunąć kropkę ułamkową mantysy, aby otrzymać wartość liczby.
Przykład Przesuwamy kropkę o 1 (p. cecha) w lewo, i otrzymujemy .01100b = 3/8, uwzględniając znak ostatecznie wartość liczby, to -3/8.
Kodowanie liczb całkowitych Znak-moduł Najbardziej znaczący bit zawiera informację o znaku liczby Najczęściej wartość 0 oznacza, że liczba jest nieujemna, zaś 1, że liczba nie jest dodatnia Pozostałe bity są naturalną reprezentacją binarną wartości bezwzględnej liczby Zero ma podwójną reprezentację: +0: 00...0 oraz –0: 10...0 Zakres: od –2 N-1+1 do 2 N-1-1, gdzie N to liczba bitów
Uzupełnienie do 2 Liczby dodatnie zapisujemy w kodzie naturalnym Liczby ujemne kodujemy jako uzupełnienie do 2 ich wartości bezwzględnych Jeśli najstarszy bit w tej reprezentacji ma wartość 0, to liczba jest nieujemna Jeśli najstarszy bit ma wartość 1, liczba jest ujemna
Uzupełnienie do 2 Zero ma pojedynczą reprezentację: 0...0 Jeśli przez N oznaczymy liczbę bitów, to liczbą wszystkich możliwych reprezentacji liczb niezerowych jest 2 N-1 Jest to liczba nieparzysta, zatem nie możemy reprezentować równej ilości liczb dodatnich i ujemnych Zakres: od –2 N-1 do 2 N-1 -1
Uzupełnienie do podstawy b-1 Niech dana będzie liczba N zajmująca n pozycji w systemie o podstawie b Uzupełnieniem liczby N do podstawy b-1 jest liczba U b-1(N)=(b n-1)-N
Przykład np. niech N=716310=7*103 + 1 *102 + 6 *101+3 *100, gdzie n=4 i b=10 W przykładzie: U 9(716310)=10 4-1-7163 = 9999 – 7163 = 2836
Uzupełnienie do podstawy Uzupełnienie jest zatem takim ciągiem cyfr, aby po dodaniu go do uzupełnianej liczby, utworzył ciąg składający się maksymalnych cyfr w danym systemie. 7163 = N + 2836 = Ub-1(N) 9999 = bn -1
W systemie binarnym (b=2) uzupełnienie do podstawy b-1jest negacją wszystkich bitów: + 0010000000100 = U b-1(N) 1111111111111= b n -1
Przykłady reprezentacji liczb całkowitych dla N=4 D –dziesiętnie, B –binarnie, ZM –znak-moduł, U2 –uzupełnienie do 2 D B ZM U2 D B ZM U2 -8 -1000 brak 1000 8 1000 brak brak -7 -111 1111 1001 7 111 0111 0111 -6 -110 1110 1010 6 110 0110 0110 -5 -101 1101 1011 5 101 0101 0101 -4 -100 1100 1100 4 100 0100 0100 -3 -11 1011 1101 3 11 0011 0011 -2 -10 1010 1110 2 10 0010 0010 -1 -1 1001 1111 1 1 0001 0001 -0 -0 1000 brak +0 +0 0000 0000
Kodowanie liczb całkowitych –kod BCD (BinaryCodedDecimals) Cyfry danej liczby w systemie dziesiętnym kodowane są za pomocą 4 bitów Jest to zatem kod nadmiarowy, gdyż nie wykorzystujemy sześciu kombinacji Istnieje różnych kodów BCD
Najczęściej używanym jest kod „8421” Nazwa ta wynika z przypisania wag kolejnym pozycjom binarnym, co ilustruje przykład: 19085610=000110010000100001010110 1 9 8 5 6
Kodowanie liczb całkowitych –kod BCD 0000 0 1000 8 0001 1 1001 9 0010 2 1010 nie używane 0011 3 1011 nie używane 0100 4 1100 nie używane 0101 5 1101 nie używane 0110 6 1110 nie używane 0111 7 1111 nie używane
Kody samouzupełniające Kod „84-2-1” jest samouzupełniający, tzn. uzupełnienie do 2 binarnej reprezentacji liczby dziesiętnej odpowiada reprezentacji uzupełnienia do 9 tej liczby dziesiętnej.
Reprezentacja zmiennoprzecinkowa – standard IEEE 754 wybrane własności: liczba zakodowana jest na 32 bitach, czyli 4 bajtach występuje mantysa z ukrytą jedynką cecha kodowana jest za pomocą ośmiu bitów,
maksymalną wartością cechy możliwą do wykorzystania przy kodowaniu zwykłych liczb jest 111111102=25410, gdyż kombinacja 111111112=25510 jest zarezerwowana dla liczb specjalnych Oznacza to, że maksymalną liczbą możliwą do zakodowania jest: 2254-127 ·1.1111...12=2127·(2-2-23) = 3.4028·1038
N=(-1)S·2E-127·1.M Obszar: S E M Liczba bitów: 1 8 23 mantysa znak wykładnik (cecha)