Informatyka I Jzyk ANSI C Kody pozycyjne Wykad
- Slides: 11
Informatyka I Język ANSI C Kody pozycyjne Wykład 2 1
Liczby całkowite Interpretacja notacji (xnxn-1 xn-2. . x 1 x 0)p= = xn • pn + xn-1 • pn-1 + xn-2 • pn-2 +. . . x 1 • p + x 0 Przykład: 15210 = 1 • 100 + 5 • 10 +2 • 1 = 1528 = 1 • 64 + 5 • 8 + 2 = 106 15216 = 1 • 256 + 5 • 16 + 2 = 338 1522 = ERROR!! Wykład 2 2
Więcej przykładów Dziesiętny (decymalny) Wykład 2 Dwójkowy Heksadecymalny (binarny) Ósemkowy (oktalny) 0 0 1 1 2 10 2 2 3 11 3 3 4 100 4 4 8 1000 8 10 9 1001 9 11 10 1010 A 12 11 1011 B 13 15 1111 F 17 16 10000 10 20 163 10100011 A 3 243 3
Procedury zamiany kodów • Przejście z kodu dwójkowego na heksadecymalny Grupujemy od końca zera i jedynki w paczki po cztery i wyznaczamy wartość każdej paczki jako jedną pozycję zapisu • Przejście z kodu heksadecymalnego na dwójkowy Każdą cyfrę z zapisu szesnastkowego zamieniamy na liczbę zapisaną w kodzie dwójkowym na czterech pozycjach • Przejście z kodu dwójkowego na ósemkowy Grupujemy od końca zera i jedynki w paczki po trzy i wyznaczamy wartość każdej paczki jako jedną pozycję zapisu • Przejście z kodu ósemkowego na dwójkowy Każdą cyfrę z zapisu oktalnego zamieniamy na liczbę zapisaną w kodzie dwójkowym na trzech pozycjach Wykład 2 4
Algorytm przejścia do kodu o podstawie p • dzielimy przekształcaną liczbę przez p dopóki nie uzyskamy 0 • zapamiętujemy reszty z kolejnych dzieleń • zapisujemy zapamiętane reszty w kolejności od końca Przykład DEC BIN 163 1 81 1 40 0 DEC OCT 163 3 20 4 2 2 0 END Wykład 2 20 0 10 0 5 1 2 0 1 1 0 END 5
Dobrze wiedzieć. . . • Należy znać potęgi dwójki przynajmniej od 21 do 216 oraz 232 = 4 294 967 296 • Definicja 1 B = 8 bitów = 23 bitów • Definicja 1 k. B=210 B=1024 B (ca 1000 B) • Związek pomiędzy rozmiarem rejestru (adresu) a wymiarem pamięci operacyjnej: 2 B =16 bitów 216 B=26 k. B=64 k. B Wykład 2 6
Operacje Arytmetyczne • Dodawanie • Mnożenie 00001011 11 +00000101 +5 • 101 • 5 00010000 16 1011 55 1011__ 110111 Mnożenie przez 2 - przesunięcie w lewo z dopisaniem 0 11*2=22 <=> 1011*10=10110 Dzielenie przez 2 - przesunięcie w prawo z wypadaniem najmłodszego bitu 11/2=5 <=> 1011/10=101 Wykład 2 7
Arytmetyka uzupełnieniowa do dwóch 2's Complementary Arithmetic Jest to sposób na uwzględnienie liczb ujemnych. Specjalny kod zapisu pozwala sprowadzić odejmowanie liczb całkowitych do ich dodawania: x – y = x + (-y) ALGORYTM ZMIANY ZNAKU x -x 1. zamieniamy wszystkie zera na jedynki i odwrotnie 2. Dodajemy 1 Przykład 1 4 -4 00000100 4 11111011 1 0 + 1 Dodajemy 1 11111100 Ponoć – 4 ? 00000011 W drugą stronę + 1 Dodajemy 1 00000100 Hura! Znowu 4! Wykład 2 8
Przykłady c. d. 1. Obliczamy wartość wyrażenia 11 – 5. Wszystkie operacje na jednym bajcie. WŁASNOŚĆ NOTACJI Najstarszy bit jest bitem znaku 1 – liczba ujemna 2. Obliczamy wartość wyrażenia 100+90. Wszystkie operacje na jednym bajcie. WNIOSEK Wynik obliczeń: 100 + 90 = -66 Ciekawostka: 100 + 90 + 66 =256 = 28 Wykład 2 00000101 5 11111011 -5 00001011 11 + 11111011 + (-5) 00000110 6 01100100 + 01011010 + 90 10111110 ? ? 190 01000001 1 0 01000010 66 9
WŁASNOŚCI KONWENCJI dodajemy 1 Binarnie Bez. 2’s c 0000 0 0 00000001 1 1 00000010 2 2 00000011 3 3 01111111 127 10000000 128 -128 10000001 129 -127 . . Wykład 2 11111110 254 -2 1111 255 -1 • Tabela ma 28 = 256 wierszy (i wartości) • Interpretacja zależy od przyjętej konwencji • W arytmetyce bezwzględnej: 0 255 • W arytmetyce uzupeł. do dwóch: -128 127 • Na dwóch bajtach można zapamiętać 216 = 65536 wartości • Bezwg: 0 65535 • 2’s: -32768 32767 10
LICZBY RZECZYWISTE • Zapis w postaci p 2 m, p – precyzja, m – mantysa; • p ma postać 0. 1. . w związku z tym trzech początkowych symboli się nie zapamiętuje bo zawsze są takie same. Zamiast tego zapamiętuje się znak; • m jest zwiększane o połowę zakresu, tak aby było zawsze nieujemne; • Wniosek: Wcale nie jest tak łatwo pomnożyć liczbę rzeczywistą przez liczbę zapisaną w arytmetyce uzupełnieniowej do dwóch (jak się jest komputerem). Wykład 2 11