t / W - Katedra Informatyki > Home
Transkrypt
t / W - Katedra Informatyki > Home
tƐƚħƉĚŽ/ŶĨŽƌŵĂƚLJŬŝ WŽĚƐƚĂǁLJĂƌLJƚŵĞƚLJŬŝŬŽŵƉƵƚĞƌŽǁĞũ Cezary Bolek [email protected] Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki WŽũħĐŝĞůŝĐnjĞďŶŽƑĐŝ • • Naturalna zdolność człowieka do postrzegania liczebności nie przekracza 3 lub 4. Aby określić liczebność bardziej licznych zbiorów trzeba uŜywać pojęć abstrakcyjnych – liczebników. Wstęp do Informatyki [email protected] >ŝĐnjĞŶŝĞďĞnjůŝĐnjĞďŶŝŬſǁ • • Budowa ludzkiego ciała dostarczyła pierwszych narzędzi ułatwiających liczenie. We współczesnych językach, nazwy niektórych liczebników pochodzą bezpośrednio od nazw części ciała. Wstęp do Informatyki [email protected] 1 ĂƉŝƐůŝĐnjď Egipt 3000-1000 p.Chr. Indie 2500-1700 p.Chr. Wstęp do Informatyki [email protected] ĂƉŝƐůŝĐnjď Grecja 500-200 p.Chr. Cywilizacja Majów 300-1400 A.D. Wstęp do Informatyki [email protected] ĂƉŝƐůŝĐnjď Licja (Azja Mniejsza) 500-0 p.Chr. Cywilizacja Etruska 600-400 p.Chr. Wstęp do Informatyki [email protected] 2 ^LJƐƚĞŵLJůŝĐnjďŽǁĞ • Addytywne: – – – – najprostsze i najstarsze liczba jest sumą symboli (później cyfr) łatwe dodawanie i odejmowanie trudne mnoŜenie i dzielenie • Pozycyjne – – – – współcześnie w uŜyciu liczba jest sumą cyfr z wagą pozycji koncepcja symbolu pustego – zera proste +, -, *, / i inne Wstęp do Informatyki [email protected] ^LJƐƚĞŵĂĚĚLJƚLJǁŶLJ X=VV=IIIIIIIIII, V=IIIII, I=1 Cyfra (symbol) ma swoją stałą wartość liczba pozycja cyfry XXXIII 6 5 4 3 2 1 X6 = X5 = X4 = dziesięć Pozycja cyfry nie ma znaczenia X X X I I I = X+X+X+I+I+I = 33 Wartość liczby jest sumą cyfr (istnieją drobne modyfikacje tej zasady) Wstęp do Informatyki [email protected] ĞƌŽ 1 2 3 4 5 6 7 8 9 10 ? 0123456789 Liczba cyfr wyznacza tzw. podstawę systemu liczbowego (np.10). Liczby większe wymagają zapisu w postaci kombinacji cyfr o róŜnych wagach - wielokrotnościach podstawy. Cyfra 0 ma znaczenie szczególne – symbolizuje brak cyfry na określonej pozycji, zaznaczając jednocześnie tę pozycję Liczba 10 - w kaŜdym systemie pozycyjnym – oznacza pierwszą liczbę złoŜoną Wstęp do Informatyki [email protected] 3 ^LJƐƚĞŵƉŽnjLJĐLJũŶLJ 1341 ≠1431 liczba pozycja cyfry 3 2 1 0 1≠1 Pozycja cyfry ma (!) znaczenie 1341 = 1·103+3·102+4·101+1 ·100 Wartość liczby jest sumą cyfr pomnoŜonych przez wagę połoŜenia (potęgę podstawy sytemu) Wstęp do Informatyki [email protected] ^LJƐƚĞŵƉŽnjLJĐLJũŶLJ am am-1 ... a2 a1 a0 m am·b + am-1·b np. m-1 b – podstawa m...0 – pozycja 1 +...+ a1·b + a0·b 0 system dziesiętny: 0 1 2 3 4 5 6 7 8 9 1234 = 1*103 + 2*102 + 3*101 + 4*100 (dziesiętnie) system ósemkowy: 0 1 2 3 4 5 6 7 1207 = 1*83 + 2*82 + 0*81 + 7*80 (dziesiętnie) system szesnastkowy: 0 1 2 3 4 5 6 7 8 9 A B C D E F a2f5 = 10*163 + 2*162 + 15*161 + 5*160 (dziesiętnie) Wstęp do Informatyki [email protected] ^LJƐƚĞŵƐnjĞƐŶĂƐƚŬŽǁLJ;ŚĞŬƐĂĚĞĐLJŵĂůŶLJͿ Hex – Dec 0–0 1–1 2–2 3–3 4–4 5–5 6–6 7–7 8–8 9–9 Wstęp do Informatyki Hex – Dec A – 10 B – 11 C – 12 D – 13 E – 14 F – 15 10h = 16 19h = 25 1Ah = 26 52h = 82 100h = 256 BABAh = 47802 F4240h = 1000000 [email protected] 4 ^LJƐƚĞŵĚǁſũŬŽǁLJ;ďŝŶĂƌŶLJͿ Najprostszy z moŜliwych: cyfry 0 i 1 • Do zapisu liczb moŜna uŜywać nie tylko cyfr, ale wszystkich dwu-stanowych zjawisk: – dźwięk krótki i długi: alfabet Morse’a – kolor czarny i biały: kody paskowe – napięcie wysokie i niskie: liczby w komputerach • Zapis liczb za pomocą tylko dwu cyfr jest najbardziej odporny za zakłócenia, gdyŜ liczby zapisuje się za pomocą dwóch skrajnie róŜnych stanów, bez Ŝadnych stanów pośrednich • fundament niezawodności techniki cyfrowej. Wstęp do Informatyki [email protected] ^LJƐƚĞŵĚǁſũŬŽǁLJ;ďŝŶĂƌŶLJͿ cyfra dwójkowa – 0 lub 1 – bit (binary digit) liczba n-bitowa: an-1 ... a1 a0 an-1·2 n-1 1 + ...+ a1·2 + a0·2 0 101b= 1*22 + 0*21 + 1*20 = 4+1 = 5d 10011001b= 27+24+23+20 = 128+18+8+1 = 153 Wstęp do Informatyki [email protected] EĂƚƵƌĂůŶLJŬŽĚďŝŶĂƌŶLJͲ E< Naturalny kod binarny, to zapis liczby dwójkowej an-1 ... a1 a0, której wartość oblicza oblicza się według wzoru: n-1 an-1·2 Wstęp do Informatyki 1 + ...+ a1·2 + a0·2 0 [email protected] 5 ĂũƚLJŝƐųŽǁĂ Liczby dwójkowe mogą mieć dowolną długość, ale w systemach komputerowych przyjęły następujące standardy długości liczb: 8-bitów 16-bitów 32-bity – Bajt (Byte), B – Słowo (Word), W – Długie słowo (Long Word), L Double Zakresy liczb dwójkowych (w NKB) są następujące: Bajt: Słowo: D.słowo: 0 ... 28-1 0 ... 216-1 0 ... 232-1 Wstęp do Informatyki = 0 ... 255 = 0 ... 65535 = 0 ... 2147483647 [email protected] <ŝůŽ͕DĞŐĂ͕'ŝŐĂ͘͘͘;ǁŝŶĨŽƌŵĂƚLJĐĞͿ W systemie jednostek SI: 1k = 1000, 1M=1000k, 1G=1000M W systemach pamięci komputerowych najmniejsza porcja danych to 1Bajt = 1B (8-bitów, 8b). Pojemności pamięci mierzy się więc powszechnie w tej jednostce, tj. jako wielokrotność 1B. 1kB = 1MB = 1GB = 210B 210kB 210MB = 1024B = 1024kB = 1024MB Marketing vs Informatyka Twardy dysk: 40GB Wstęp do Informatyki 37.2GB [email protected] >ŝĐnjďLJĚǁſũŬŽǁĞĚŽnjĂƉĂŵŝħƚĂŶŝĂ Dec – Bin – Hex 0 – 0000 – 0 1 – 0001 – 1 2 – 0010 – 2 3 – 0011 – 3 4 – 0100 – 4 5 – 0101 – 5 6 – 0110 – 6 7 – 0111 – 7 Wstęp do Informatyki Dec – Bin – Hex 8 – 1000 – 8 9 – 1001 – 9 10 – 1010 – A 11 – 1011 – B 12 – 1100 – C 13 – 1101 – D 14 – 1110 – E 15 – 1111 – F [email protected] 6 WƌnjĞůŝĐnjĂŶŝĞĞĐ→ ŝŶ;E<Ϳ Przeliczanie liczb dziesiętnych na dwójkowe polega na rozkładzie liczby na sumę potęg liczby 2, i zapisie 1 na pozycji równej wartości danej potęgi. 1 2 4 8 16 32 64 128 256 512 1024 np. 129 = 128 + 1 = 27 + 20 = 10000001b 143 = 128 + 8 + 4 + 2 + 1 = 100011141b 77 = 64 + 8 + 4 + 1 = 01001101b 17 = 16 + 1 = 00010001b Wstęp do Informatyki [email protected] WƌnjĞůŝĐnjĂŶŝĞŝŶ;E<Ϳ→ ĞĐ Przeliczanie liczb dwójkowych na dziesiętne polega na sumowaniu potęg liczby 2 odpowiadających pozycjom ‘1’ w liczbie dwójkowej. 10000001b = 27 + 20 = 128 + 1 = 129 00010001b = 16+ 1 = 17 Wstęp do Informatyki [email protected] WƌnjĞůŝĐnjĂŶŝĞĞĐ↔ ,Ğdž 3F8h = 3*162 + 15*161 + 8*160 = 768 + 240 +8 = 1016 375 = 1*256 + 7*16 + 7 = 1*162 + 7*161 + 7*160 = 177h W dzisiejszych czasach ... najlepiej skorzystać z kalkulatora Wstęp do Informatyki [email protected] 7 WƌnjĞůŝĐnjĂŶŝĞŝŶ;E<Ϳ↔ ,Ğdž Przeliczanie liczb dwójkowych na szesnastkowe (lub odwrotnie) polega na zamianie kaŜdych 4 cyfr dwójkowych na odpowiednią cyfrę heksadecymalną. 1001 1101 9 D 5 A 0101 1010 0101 1010 0001 0111b = 5A17h Liczby szesnastkowe ułatwiają posługiwanie się duŜymi liczbami dwójkowymi Wstęp do Informatyki [email protected] ŽĚĂǁĂŶŝĞůŝĐnjďĚǁſũŬŽǁLJĐŚ;E<Ϳ 1 1 1 10010100 (148) + 01001111 ( 79) 11100011 (227) 1 1 1 1 1 10011110 (158) + 01100100 (100) bit 100000010 ( 2) 258>255! przeniesienia (carry) ! Uwaga na przekroczenie zakresu liczby Wstęp do Informatyki [email protected] KĚĞũŵŽǁĂŶŝĞůŝĐnjďĚǁſũŬŽǁLJĐŚ W kaŜdym systemie liczbowym: X – Y = X + (–Y) oraz X – X = X + (–X) = 0 Odejmowanie liczb najłatwiej zrealizować jako dodawanie liczby ujemnej. Potrzebny jest zatem sposób zapisu liczb ujemnych. (NKB nie pozwala na zapis liczb ujemnych) Wstęp do Informatyki [email protected] 8 >ŝĐnjďLJƵũĞŵŶĞʹ ŬŽĚŶĂŬͲDŽĚƵų ;DͿ Kod Znak-Moduł (ZM): niech najstarszy bit oznacza znak liczby 1 – minus, 0 - plus 10001001 = -9 znak + moduł (NKB) System ZM nie pozwala na proste wykonywanie dodawania liczb ujemnych – w praktyce nie jest juŜ stosowany. 01000001 (65) + 10000001 (-1) 11000010 (-66 !) Wstęp do Informatyki [email protected] >ŝĐnjďLJƵũĞŵŶĞʹ hnjƵƉĞųŶŝĞŶŝĞ:ĞĚLJŶŬŽǁĞ ;hϭͿ Uzupełnienie jedynkowe (U1): negacja bitów 01000001 ( 65) 10111110 (-65) 11111111 ( -0 ?) + + 01000001 (65) 11111110 (-1) 1 00111111 (63 !) Wstęp do Informatyki [email protected] >ŝĐnjďLJƵũĞŵŶĞʹ hnjƵƉĞųŶŝĞŶŝĞǁſũŬŽǁĞ;hϮͿ Uzupełnienie dwójkowe (U2): 1. negacja bitów 2. dodanie liczby 1 np. aby zapisać liczbę – 39 w kodzie U2: 00100111 11011000 00000001 11011001 Wstęp do Informatyki (39) U1 +1 (-39) sprawdzenie: + 00100111 (39) 11011001 (-39) 00000000 [email protected] 9 <ŽĚhϮ Kod uzupełnienia dwójkowego (U2), to zapis liczby dwójkowej an-1 ... a1 a0, której wartość oblicza oblicza się według wzoru:–an-1·2 n-1 + an-2·2 n-2 1 0 + ...+ a1·2 + a0·2 znak minus (-) przy największym składniku Wstęp do Informatyki [email protected] hϮĐ͘Ě͘ an-1 an-1 ... a1 a0 –2n-1 + moduł (NKB) (bit znaku) 11111111 = -1 –27 + moduł (NKB) –128 + 127 = –1 11111111 ( -1) 11111111 (-1) + 00000001 (+1) + 11111111 (-1) 1 00000000 ( 0) Wstęp do Informatyki 1 11111110 (-2) [email protected] >ŝĐnjďLJhϮʹ njĂŬƌĞƐ Ze względu na postać liczby: –an-1·2 n-1 + an-1·2 n-2 1 + ...+ a1·2 + a0·2 0 zakres liczb w U2 wynosi: n-1 n-1 –2 ... 0 ... 2 –1 dla liczb n-bitowych. W szczególności dla bajta (8-bitów) zakres ten wynosi: 7 7 –2 ... 0 ... 2 –1 –128 ... 0 ... 127 Wstęp do Informatyki [email protected] 10 hϮĐ͘Ě͘ reprezentacja 8-bitowych liczb w kodzie U2: -128 -127 -126 ... -2 -1 0 1 2 ... 126 127 Wstęp do Informatyki = = = 10000000 10000001 10000010 = = = = = 11111110 11111111 00000000 00000001 00000010 = = 01111110 01111111 [email protected] hϮĐ͘Ě͘ Wstęp do Informatyki [email protected] WƌnjĞůŝĐnjĂŶŝĞŝŶ;hϮͿ→ ĞĐ Przeliczanie ujemnych liczb U2 na dziesiętne polega na dodaniu wartości wagi bitu znaku -2n-1 do wartości modułu. 10000001b = -27 + 20 = -128 + 1 = -127 10010001b = -27 + 16+ 1 = -128 + 17= -111 Wstęp do Informatyki [email protected] 11 WƌnjĞůŝĐnjĂŶŝĞĞĐ→ ŝŶ;hϮͿ Przeliczanie ujemnych liczb dziesiętnych na U2 polega odjęciu wartości wagi bitu znaku -2n-1, (czyli dodaniu 2n-1) od wartości liczby i zapisaniu wyniku jako modułu (w NKB). -120: znak = 1 moduł = -120+27 = -120+128 = 8 = 0001000b -120 = 10001000b Wstęp do Informatyki [email protected] njŝĂųĂŶŝĂǁŬŽĚnjŝĞhϮ Reguła odejmowania: aby odjąć jedną liczbę (odjemnik) od drugiej (odjemna), oblicz uzupełnienie dwójkowe odjemnika i dodaj do odjemnej. Rozszerzenie znakowe: aby liczbę n-bitową U2 zapisać na m-bitach (m>n), naleŜy uzupełnić brakujące bity wartością najstarszego bitu (0 lub 1) liczby n-bitowej. 8-bitowa liczba –99 = 10011101b 16-bitowa liczba –99 = 1111111110011101b Wstęp do Informatyki [email protected] njŝĂųĂŶŝĂǁŬŽĚnjŝĞhϮ Reguła przepełnienia (overflow): przepełnienie (błąd zakresu) występuje podczas dodawania dwóch liczb ujemnych lub dwóch liczb dodatnich, gdy wynik ma znak przeciwny. + 10000000 (-128) 11111111 ( -1) 1 01111111 ( 127) + 01111111 ( 127) 00000001 ( 1) 10000000 (-128) Podczas dodawania liczb przeciwnych znaków przepełnienie nie występuje. Wstęp do Informatyki [email protected] 12 /ŶƚĞƌƉƌĞƚĂĐũĂůŝĐnjďĚǁſũŬŽǁLJĐŚ Wartość liczby dwójkowej zaleŜy od interpretacji jej zapisu. Ta sama sekwencja zer i jedynek moŜe oznaczać róŜne liczby. 10101010b = 170 (NKB) 10101010b = -86 (U2) 10101010b = -42 (ZM) Wstęp do Informatyki [email protected] 13