Materiały laboratoryjne Podstawy informatyki dr inż. Zbigniew Zakrzewski Z.Z. Podstawy informatyki 1 v.1.2
Systemy zapisu liczb a ogół operujemy systemami pozycyjnymi, np. rzymski, dziesiętny. System pozycyjny oznacza, że wartość zapisywanego znaku zależy od jego miejsca, położenia rzymski = system pozycyjny sekwencyjny dziesiętny = system pozycyjny wagowy gdzie: m, n ; m n; 2; a {0,...,-1} n L ai im i nazywamy podstawą systemu, zaś a jest elementem zbioru cyfr dostępnych w danym systemie systemie dziesiętnym: = 10, a {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Z.Z. Podstawy informatyki 2
System dwójkowy System dwójkowy jest naturalnym systemem informatyki. Jak zapisujemy informację? Za pomocą zjawisk elektrycznych, magnetycznych, świetlnych Zamiast skomplikowanych pomiarów które by pozwoliły zapisać 10 cyfr mamy proste i jednoznaczne kodowanie. Materiał półprzewodnikowy: gdy przyłożymy napięcie w jednym kierunku przewodzi prąd (prawie idealnie), a w kierunku przeciwnym nie przewodzi prądu. Mamy wiec dwa stany Podobnie jest w magnetyzmie: substancje magnetyczne można namagnesować w dwóch kierunkach adę systemy dwójkowego stanowi długość liczby, np. (0010001110100101) 2 = 2 13 + 2 9 + 2 8 + 2 7 + 2 5 + 2 2 + 2 0 = (9125) 10 Z.Z. Podstawy informatyki 3
Uwaga! ie jest zgodne z układem SI Bity a Bajty Przyjęło się stosowanie jednostki liczącej 8 bitów, nazwanej bajtem Bajt to podstawowa komputerowa jednostka (porcja) informacji Dzisiaj mamy kilobajty, megabajty, gigabajty, terabajty,... azwa Liczba bajtów [B] Potoczne rozumienie Kilobajt 2 10 = 1 024 10 3 (tysiąc) Megabajt 2 20 = 1 048 576 10 6 (milion) Gigabajt 2 30 = 1 073 741 824 10 9 (miliard) Terabajt 2 40 = 11 099 511 627 776 10 12 (bilion) Jeden bajt może reprezentować 256 różnych wartości, które mogą oznaczać zapisywane wiadomości (zgodnie z regułą Hartleya) Z.Z. Podstawy informatyki 4
Kodowanie informacji Jak to się dzieje, że w pamięci komputera można przechowywać teksty, obrazy, dźwięki i liczby znacznie różniące się od zestawu 0 256? Dzięki kodowaniu informacji! Bez kodowania nie ma zapisu różnorodnych informacji w pamięci komputera. Kodowanie występuje w każdym programie i na każdym poziomie. Kodowanie multimediów (zamiana na informację) nazywamy kodowaniem źródłowym Z.Z. Podstawy informatyki 5
Kodowanie liczb i znaków Liczby całkowite 89 Liczby binarne 1011001 Liczby dziesiętne 12,3 Liczby binarne?????? Znaki alfanumeryczne CB Liczby binarne?????? Jak przechowywać informacje o liczbach ułamkowych oraz różnorodnych znakach (literach, np. chińskich)? Z.Z. Podstawy informatyki 6
Komunikacyjny model Shannona Kanał Shannona a prawo wartości informacji Hartleya: H =M artość informacji wg Hartleya liczba stanów H = log = 2 1024 10 M liczba wiadomości Szum addytywny Źródło informacji adajnik Kanał Odbiornik Punkt przeznaczenia adana wiadomość adany sygnał Odebrany sygnał Odebrana wiadomość Z.Z. Podstawy informatyki 7
Kodowanie w systemie naturalnym KD Formuła naturalnego (pozycyjnego) kodu dziesiętnego: (arabskiego) 2578 10 artość 3 2 1 0 L A 210 510 710 810 Znaki alfabetu agi systemu L A a 8, a 7, a 5, a 2 0 1 2 3 3 i0 a i 10 i a 0,1,, p 1, gdzie p 10 i a i 0,1,2,,9 Ogólny zapis Z.Z. Podstawy informatyki 8
Zapis liczb nieujemnych w kodzie KD Formuły wiążące słowo kodowe z liczbami nieujemnymi: 1. ieujemna liczba całkowita L 0: A a, 0 1 n1 ai a1a0 ai p Słowo kodowe Długość słowa n1 n1 n2 1 0 i n1 n2 1 0 i i0 L A a p a p a p a p a p 2. ieujemna liczba ułamkowa 0 L < 1: A a 1a2 a j am 1 am, 0 a j p 1 Podstawa kodu Długość słowa 1 1 2 m1 m j 1 2 m1 m j jm L A a p a p a p a p a p Z.Z. Podstawy informatyki 9
Zapis liczb nieujemnych w kodzie KD c.d 3. ieujemna liczba rzeczywista L 0 : A a a a a a a a n1 n2 1 0 1 2 m L A n1 km a p k k Maksymalna wartość liczby całkowitej Maksymalna wartość liczby ułamkowej L n max p 1 Lmax 1 p n Przykład: Przykład: L 10 1 max 4 9999 L 4 1 10 max 0.9999 Z.Z. Podstawy informatyki 10
Kodowanie w systemie naturalnym KB Formuła naturalnego (pozycyjnego) kodu dwójkowego: 1011 2 artość 3 2 1 0 LB 1 2 0 2 1 2 1 2 Znaki alfabetu agi systemu L B b 1, b 1, b 0, b 1 0 1 2 3 3 i0 b i 2 i b 0, p 1, gdzie p 2 i b i 0,1 Ogólny zapis Z.Z. Podstawy informatyki 11
Liczba naturalna w kodzie dwójkowym Słowo n-bitowe: X = x n-1... x 1 x 0 Słowo 8 bitowe: 10010011 Takie słowo reprezentuje liczbę z przedziału od 0 do 2 n -1 Czyli dla n = 8 Czyli dla n = 16 Czyli dla n = 24 Czyli dla n = 64 0 255 na jednym bajcie 0 65535 na dwóch bajtach 0 16777216 na trzech bajtach 0 1.8447x10 19 na ośmiu bajtach Z.Z. Podstawy informatyki 12
Zapis liczb nieujemnych w kodzie KB Formuły wiążące słowo kodowe z liczbami nieujemnymi: 1. ieujemna liczba całkowita L 0: B b, 0,1 n1bn 2 bi b1b 0 bi Słowo kodowe Długość słowa n1 n1 n2 1 0 i n12 n22 12 02 i 2 i0 L B b b b b b 2. ieujemna liczba ułamkowa 0 L < 1: B b 1b 2 bj b m1 b m, bj 0,1 1 1 2 m1 m j 12 2 2 m12 m2 j 2 jm L B b b b b b Długość słowa Z.Z. Podstawy informatyki 13
Zapis liczb nieujemnych w kodzie KB c.d 3. ieujemna liczba rzeczywista L 0 : B b b b b b b b n1 n2 1 0 1 2 m L B n1 km b k 2 k Maksymalna wartość liczby całkowitej Maksymalna wartość liczby ułamkowej n Lmax 2 1 Lmax 12 n Przykład: 4 Lmax 2 1 15 Przykład: 4 L max 1 2 0.9375 Reprezentacja dziesiętna Z.Z. Podstawy informatyki 14
Kody wspomagające kod KB Powody wprowadzenia kodów wspomagających: 1. Zbyt długie łańcuchy symboli KB w ręcznym przetwarzaniu przez człowieka. 2. Możliwość popełnienia błędu w ręcznym zapisie KB. Kody wspomagające - p r 2, gdzie r 1 Kod ósemkowy (OCT) r = 3 Kod szesnastkowy (HEX) r = 4 przypadku kodów o większej liczbie symboli niż 10, stosuje się oznaczenia literowe od A do litery dopełniającej zakres (w przypadku kodu szesnastkowego do litery F ). Z.Z. Podstawy informatyki 15
Reprezentacja liczb w kodach naturalnych Tabela z wybranymi liczbami: KD KB OCT HEX 0 0 0 0 1 1 1 1 2 10 2 2 3 11 3 3 4 100 4 4 5 101 5 5 6 110 6 6 7 111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F Z.Z. Podstawy informatyki 16
Konwersja kodów (dziesiętny dowolny) całkowite Metodyka konwertowania dziesiętnych liczb całkowitych: L dziesiętna liczba całkowita, B liczba równoważna dziesiętnej o podstawie p. Metoda iteracyjnego dzielenia przez podstawę p. L b0 a 0, gdzie: a - liczba całkowita, b 0 p 1 - reszta p p a0 b1 a1 b2 an 1 bn a1, a2,, 0 p p p p p p Uniwersalny konwerter (KD dowolny): p 2 System B b b b b n n1 1 0 p 1024 10000000000 10 2 Z.Z. Podstawy informatyki 17
Konwersja kodów (dziesiętny dwójkowy) całkowite Przykład konwersji KD na KB (dla liczb całkowitych): 61 10 61 1 2 2 30 15 0, 0, 2 1 2 30, b0 1, b1 3 15 1 7, b2 1, 2 2 4 7 1 3, b3 1, 2 2 3 1 2 2 1 1 0, 1, 2 2 5 6 1, b4 1, b5 ynik: 61 10 = 111101 2 Z.Z. Podstawy informatyki 18
ielkości liczbowe Liczby naturalne: Jeden bajt 0, 1,..., 255 Dwa bajty...,2 16 1 ( czyli około 6*10 4 ) Cztery bajty...,2 32 1 ( czyli około 4*10 9 ) Liczby ujemne: kodowanie w systemie znak-moduł Umawiamy się, że jeden bit z liczby oznacza jej znak (np. ósmy bit) Dla jednego bajta otrzymamy liczby (-127, 127) Ten zakres można rozszerzyć używając dwa bajty, cztery bajty, itd... + 0 = 00000000 Problem: niejednoznaczność definicji zera - 0 = 10000000 Z.Z. Podstawy informatyki 19
Liczby ujemne Kodowanie w systemie znak-moduł Bit 7 6 5 4 3 2 1 0 Znaczenie znak 64 32 16 8 4 2 1 Kodowanie w systemie uzupełnieniowym Bit 7 6 5 4 3 2 1 0 Znaczenie -128 64 32 16 8 4 2 1 Jeżeli kolejnym bitom przypiszemy wartości jak w tabeli to otrzymamy liczby z zakresu ( 128,127). ie ma podwójnej reprezentacji zera, ale przedział jest niesymetryczny. Ta asymetria jest wpisana w metodę, ponieważ w bajcie możemy zakodować 256 wartości. Odliczając ciąg znaków oznaczających zero zostaje nam różnych 255 wartości. Z.Z. Podstawy informatyki 20
Liczby całkowite Liczby całkowite: kodowanie w systemie uzupełnieniowym szystkie otrzymane wartości są dokładne; Istnieje górne i dolne ograniczenie zakresu wartości liczb; Ograniczenia te zależą od tego, ile bajtów przeznaczymy na liczbę oraz od systemu kodowania znaku; Przy takim zapisie umawiamy się, że przecinek leży za prawym skrajnym znakiem Ten system kodowania nazywamy też systemem stałoprzecinkowym Otrzymujemy dla niego zawsze dokładne wartości Z.Z. Podstawy informatyki 21
Konwersja kodów (dziesiętny dowolny) ułamkowe Metodyka konwertowania dziesiętnych liczb ułamkowych: L dziesiętna liczba ułamkowa, B liczba równoważna dziesiętnej o podstawie p. Metoda iteracyjnego mnożenia przez podstawę p. L p b d, gdzie: d - nowy ułamek, b p 1 - liczba całkowita 1 1 1 1 d1 p b 2 d2, d2 p b 3 d3,, dm 1p b m dm B b b b 0. 1 2 m p Koniec obliczeń dla d m = 0 Z.Z. Podstawy informatyki 22
Konwersja kodów (dziesiętny dwójkowy) ułamkowe Przykład konwersji KD na KB (dla liczb ułamkowych): 0.21 10 1 0.21 2 0 0.42, b 1 0, 2 3 4 5 6 I tak dalej... 0.42 2 0 0.84, 0, b 2 0.84 2 1 0.68, 1, b 3 0.68 2 1 0.36, 1, b 4 0.26 2 0 0.72, 0, b 5 0.72 2 1 0.44, 1, b 6 Stąd 0.21 10 = (0.001101...) 2 Z.Z. Podstawy informatyki 23
Konwersja kodów (dwójkowy dziesiętny) całkowite Metodyka konwertowania liczb całkowitych KB na KD: 1011 2 3 2 1 0 1 2 0 2 1 2 1 2 L B 8 0 2 1 11 11010 2 4 3 2 1 0 L B 12 12 02 12 02 16 8 0 2 0 26 Przykład 1: Przykład 2: Konwerter KB KD: 111111111111 2 4095 10 Z.Z. Podstawy informatyki 24
Konwersja kodów (dwójkowy HEX) całkowite Metodyka konwertowania liczb całkowitych KB na HEX: 1110 0101 1101 0111 2 Przykład 1: Tetrady liczby szesnastkowej L B 1110 0101 1101 0111 KB 14 5 13 7 KD E 5 D 7 HEX Konwerter KB HEX: ynik: 1110010111010111 2 = E5D7 16 1110010111010111 2 E5D7 16 Z.Z. Podstawy informatyki 25
Uzupełnienia liczb Każda liczba zapisana w kodzie naturalnym może być przedstawiona w odpowiednim kodzie uzupełnieniowym. Dla każdego naturalnego kodu liczbowego o podstawie p istnieją dwa rodzaje uzupełnień: a) uzupełnienie do podstawy p, oznaczane symbolem Up, b) uzupełnienie do zmniejszonej podstawy p-1, oznaczane symbolem U(p-1). Dla liczb o podstawie p = 10 i p = 2 otrzymuje się odpowiednio uzupełnienia: U10, U9 i U2, U1. Z.Z. Podstawy informatyki 26
Uzupełnienie U(p-1) w teorii Formuła na uzupełnienie do zmniejszonej podstawy: n m U p 1 L p p L L liczba nieujemna, p podstawa liczby, n 0 długość części całkowitej liczby, m 0 długość części ułamkowej liczby. Praktyczna reguła: Uzupełnienie U(p-1) liczby nieujemnej otrzymuje się przez odjęcie każdej cyfry tej liczby od (p-1) Z.Z. Podstawy informatyki 27
Uzupełnienie U(p-1) w praktyce Przykłady dla liczb dziesiętnych oraz dwójkowych: Dziesiętne: U9 347 652 U9 67.324 32.675 U9 0 9 U9 0.0 9.9 Dwójkowe: U1 101101 010010 U1 01.1011 10.0100 U1 0 1 U1 0.0 1.1 przypadku liczb dwójkowych operacja uzupełnienia do 1 nosi nazwę dopełnienia i oznacza zastąpienie każdej jedynki przez zero i odwrotnie, czyli negację wszystkich bitów danej liczby. Z.Z. Podstawy informatyki 28
Formuła na uzupełnienie do podstawy: L liczba nieujemna, p podstawa liczby, Uzupełnienie Up w teorii n Up L p L dla L 0 Up 0 0 n 0 długość części całkowitej liczby. Praktyczna reguła nr 1: Uzupełnienie Up liczby nieujemnej otrzymuje się przez dodanie jedynki na najmniej znaczącej pozycji jej uzupełnienia U(p-1). Praktyczna reguła nr 2: Uzupełnienie Up liczby nieujemnej otrzymuje się przez pozostawienie wszystkich mniej znaczących zer bez zmiany, odjęcie pierwszej niezerowej najmniej znaczącej cyfry od podstawy p, a następnie odjęcie pozostałych bardziej znaczących cyfr od zmniejszonej podstawy (p-1) Z.Z. Podstawy informatyki 29
Uzupełnienie Up w praktyce Przykłady dla liczb dziesiętnych oraz dwójkowych: Dziesiętne: 4 n n 2 n U10 3470 6530 10 3470 4 U10 0.3947 0.6053 1 0.3947 0 U10 32.194 67.806 10 32.194 2 U10 0 0 Dwójkowe: U2 101100 010100 U2 01.1010 10.0110 U 2 0 0 U 2 0.0 0.0 przypadku liczb dwójkowych (p = 2) uzupełnienia do 2 można otrzymać pozostawiając wszystkie mniej znaczące zera i pierwszą najmniej znaczącą jedynkę niezmienione, a następnie negując pozostałe bity. Z.Z. Podstawy informatyki 30
Zapis liczb dwójkowych ze znakiem dwójkowym systemie liczbowym znaki + oraz - są wprowadzane w postaci odrębnego bitu znaku, gdzie : 1 - reprezentuje umownie znak -, 0 odpowiada znakowi +. Stosuje się trzy zasadnicze sposoby kodowania liczb dwójkowych ze znakiem: 1. Znak-Moduł (ZM). 2. Znak-Uzupełnienie do 1 (ZU1). 3. Znak-Uzupełnienie do 2 (ZU2). Kody te stosuje się do liczb całkowitych i ułamkowych, czyli ogólnie biorąc liczb rzeczywistych. Z.Z. Podstawy informatyki 31
Liczba ze znakiem w kodzie ZM kodzie ZM liczby dodatnie i ujemne o tych samych wartościach bezwzględnych różnią się tylko bitem znaku. Całkowite: 1210 0.11002 12 1.1100 10 2 Ułamkowe: 0.7510 0.11002 0.75 1.1100 10 2 praktyce układowej kropka jest pomijana, gdyż zwykle przyjmuje się, że dany zapis reprezentuje albo liczbę całkowitą albo liczbę ułamkową. Z.Z. Podstawy informatyki 32
Liczba ze znakiem w kodzie ZU1 kodzie ZU1 reprezentacja: liczby dodatniej jest taka sama jak w kodzie ZM, liczby ujemnej jako bit znaku równy 1 oraz uzupełnienie jej modułu do 1. Całkowite: 1210 0.11002 12 1.0011 10 2 Ułamkowe: 0.7510 0.11002 0.75 1.0011 10 2 Kody ZM i ZU1 wprowadzają pewną anomalię dwie różne liczby reprezentują zero. Te dwa zera określa się umownie jako dodatnie i ujemne zero. Z.Z. Podstawy informatyki 33
Liczba ze znakiem w kodzie ZU2 kodzie ZU2 reprezentacja: liczby dodatniej jest taka sama jak w kodzie ZM oraz ZU1, liczby ujemnej jako bit znaku równy 1 oraz uzupełnienie jej modułu do 2. Całkowite: 1210 0.11002 12 1.0100 10 2 Ułamkowe: 0.7510 0.11002 0.75 1.0100 10 2 przypadku kodu ZU2 zero jest zapisane jednoznacznie bez względu na ustawienia bitu znaku. Z.Z. Podstawy informatyki 34
Uzupełnienie U2 do podstawy (kod ZU2) Liczby całkowite ze znakiem: Przykłady liczb z przedziału od -2 n-1 do 2 n-1-1: Dla n = 8 Dla n = 16-128 do 127 na jednym bajcie -32768 do 32767 na dwóch bajtach n2 n1 i 2 n1 2 i0 K L x x x n wartość n-tego pola w zapisie binarnym i Liczba ujemna = Zanegowana liczba dodatnia + 1 L L1 Z.Z. Podstawy informatyki 35
Uzupełnienie U2 (kod ZU2) - przykład Słowo 8-bitowe (kodowanie ZU2): -2 10 a) Liczba 2 binarnie: 00000010 b) Zanegowana liczba 2 binarnie: 11111101 c) Zanegowana liczba 2 binarnie +1: 11111110 Słowo 8-bitowe (dekodowanie ZU2): n1 2 n2 i n1 2 i 8 i0 K L x x n 11111110-128 + 64 + 32 + 16 + 8 + 4 + 2 + 0 = -2 Z.Z. Podstawy informatyki 36
Przykłady liczb ze znakiem w kodach Tabela z czterobitowymi liczbami ze znakiem w kodach: Liczba dziesiętna (w nawiasach ułamkowa) Liczba dwójkowa ZM ZU1 ZU2-8 (-1) 1.000-7 (-0.875) 1.111 1.000 1.001-6 (-0.75) 1.110 1.001 1.010-5 (-0.625) 1.101 1.010 1.011-4 (-0.5) 1.100 1.011 1.100-3 (-0.375) 1.011 1.100 1.101-2 (-0.25) 1.010 1.101 1.110-1 (-0.125) 1.001 1.110 1.111-0 1.000 1.111 0 0.000 +0 0.000 0.000 1 (0.125) 0.001 0.001 0.001 2 (0.25) 0.010 0.010 0.010 3 (0.375) 0.011 0.011 0.011 4 (0.5) 0.100 0.100 0.100 5 (0.625) 0.101 0.101 0.101 Z.Z. Podstawy informatyki 37
Kody dwójkowo-dziesiętne BCD w teorii Cechy kodu BCD (Binary-Coded-Decimal): 1. Każda cyfra dziesiętna jest oddzielnie kodowana dwójkowo w postaci odpowiedniego słowa. 2. Cała liczba dziesiętna jest kodowana dwójkowo przez złożenie słów dwójkowych, reprezentujących wszystkie cyfry tej liczby. 3. Do zapisu cyfr potrzebne są co najmniej 4-bitowe słowa. 4. szystkie kody BCD są kodami nadmiarowymi (2 4 = 16). 5. Możliwości kombinacyjne 4-bitowych słów kodowych jako kodów BCD: 10! m! 16!/ 6! 2.9 10 Z.Z. Podstawy informatyki 38
Kody BCD w praktyce Przykład kodowania w kodzie 8421 : 6283 10 6 2 8 3 0110 0010 1000 0011 ynik Przykład kodowania w kodzie 2421 : 6283 10 6 2 8 3 1100 0010 1110 0011 Praktyczna reguła: Pierwsze 5 cyfr kodowane jak w 8421, pozostałe 5 zanegowane odpowiedniki dopełnień do 9. ynik Kody samouzupełniające uzupełnienie do 1 liczb dwójkowych daje uzupełnienie do 9 odpowiednich liczb dziesiętnych. Z.Z. Podstawy informatyki 39
Zestawienie kodów BCD Tabela z wykazem kodów dwójkowo-dziesiętnych BCD: KD 8421 2421 (Aikena) XS3 XS3 - Graya 1 z 10 7- segmentowy 0 0000 0000 0011 0010 0000000001 1111110 1 0001 0001 0100 0110 0000000010 0110000 2 0010 0010 0101 0111 0000000100 1101101 3 0011 0011 0110 0101 0000001000 1111001 4 0100 0100 0111 0100 0000010000 0110011 5 0101 1011 1000 1100 0000100000 1011011 6 0110 1100 1001 1101 0001000000 1011111 7 0111 1101 1010 1111 0010000000 1110010 8 1000 1110 1011 1110 0100000000 1111111 9 1001 1111 1100 1010 1000000000 1111011 Z.Z. Podstawy informatyki 40
Reprezentacja stałoprzecinkowa ady reprezentacji stałoprzecinkowej (Fixed Point otation): A 47567.31 B 0.000075244 10-cyfrowy format: XXXXX.XXXXX A 47567.31000 B 0.00007 5244 obcięte 00000.00007 przypadku liczb stałoprzecinkowych wystąpi duży błąd przy bardzo małych wartościach oraz bardzo dużych wartościach (w odniesieniu do powyższego formatu). Z.Z. Podstawy informatyki 41
Liczby rzeczywiste Charakterystyka: Liczby rzeczywiste mają cześć całkowitą i ułamkową ie można już przyjąć, że przecinek leży po prawej stronie (bo wtedy byśmy mieli tylko liczby całkowite) ani, że leży po lewej stronie (bo wtedy byśmy mieli tylko liczby ułamkowe) iezbyt ekonomiczne byłoby używanie kodowania w systemie stałoprzecinkowym (np. przecinek rozdziela dwa bajty) Co chcemy tak naprawdę uzyskać? System kodowania dla którego błąd względny będzie tego samego rzędu dla wszystkich wartości biorących udział w obliczeniach. Z.Z. Podstawy informatyki 42
Skalowanie liczby Dostosowywanie skali liczby ułamkowej: B 0.000075244 B B 0.7524410 7.524410 5 4 A 47567.31 i tak dalej... A B 47567.310.75244 0.0001 Możliwość wykonania działania z zastosowaniem wszystkich cyfr znaczących. ynik jednak musi być dodatkowo pomnożony przez wykładniczy współczynnik korygujący. Z.Z. Podstawy informatyki 43
System zmiennoprzecinkowy Metoda: Kodowanie w systemie zmiennoprzecinkowym zwanym też cecha-mantysa umożliwia zapis liczb rzeczywistych z ustalonym błędem względnym system oparty na podziale liczby na cześć ułamkową zwaną mantysą oraz na wykładnik potęgi podstawy systemu zwany cechą opracowany na podstawie zapisu liczby w systemie pozycyjnym wagowym Z.Z. Podstawy informatyki 44
Reprezentacja zmiennoprzecinkowa Zmiennoprzecinkowa (Floating Point otation) reprezentacja liczby dziesiętnej: L L M L M p dl M mantysa, liczba ułamkowa ze znakiem, przedstawiona w jednym z trzech kodów ZM, ZU1, ZU2, wykładnik lub cecha, liczba całkowita ze znakiem przedstawiona również w jednym z trzech kodów (niekoniecznie tym samym co M), p wspólna podstawa kodów zastosowanych do zapisu słów M i, d liczba naturalna (zwykle równa 1). Z.Z. Podstawy informatyki 45
ormalizacja liczby zmiennoprzecinkowej Liczba zmiennoprzecinkowa jest znormalizowana, jeśli mantysa spełnia warunek: p d 1 L M Podczas czynności normalizacji następuje odpowiednie przesunięcie pozycji kropki dziesiętnej ( przecinka ), co uzasadnia nazwanie tej notacji zmiennoprzecinkową. przypadku liczb dwójkowych odbywa się to poprzez przesunięcie cyfr znaczących w prawo lub w lewo, w zależności od tego czy przecinek należy przesunąć w kierunku liczb małych, czy też dużych. Z.Z. Podstawy informatyki 46
Liczby zmiennoprzecinkowe w praktyce Metodyka dostosowywania liczby zmiennoprzecinkowej: Przykład: Przyjęto jednobajtowe słowo dwójkowe M i w kodzie ZU2. Zadanie: Przedstawienie liczby dziesiętnej L = -4.25 w dwójkowym zapisie zmiennoprzecinkowym, znormalizowanym. 1. Przekształcenie liczby L na liczbę dwójkową w kodzie ZU2: 2. ormalizacja poprzez przesunięcie przecinka dziesiętnego (warunek poprzedni slajd): 3. Stosując 8-bitowy kod ZU2 dla słów mantysy i wykładnika otrzymujemy dwójkowy zapis zmiennoprzecinkowy: 4. Sprawdzenie: L M ZU 2 L 1.011.11 L L 3 1.01111 2 M 1.01111000.0000011 M L 1 5 3 3 p 2 2 2 0.53125 2 4.25 irtualne kropki Z.Z. Podstawy informatyki 47
Znak Standard IEEE 754 Pojedyncza precyzja: mantysa 23 bity, wykładnik 8 bitów (nadmiar 127), znak 1 bit bit 31 bajt 4 2322 bajt 3 bajt 2 bajt 1 0 S E E E E E E E E M M M M M M M M M M M M M M M M M M M M M M M ykładnik Mantysa artość: 1/4 1/16 1/64 itd. 1/2 23 1/2 1/8 1/32 itd.. Mantysa jest znormalizowana do zmniejszonej podstawy wykładnika (kodowanie w formacie U1) Z.Z. Podstawy informatyki 48
Standard IEEE 754 Procedura zapisu: 1) Określamy znak: Bit31= 1 jeżeli liczba ujemna, 0 jeżeli dodatnia 2) Szukamy największej liczby postaci 2 w mniejszej niż liczba 3) Zapisujemy wykładnik = w + nadmiar 4) Dzielimy liczbę przez 2 w (wynik będzie miał postać 1.xxxx) 5) Odejmujemy 1 i szukamy mantysy Jedynka wiodąca 6) Zaznaczamy bit jako 1 jeżeli po odjęciu 1/(2 (23-bit) ) (dla pojedynczej precyzji) mamy wartość nieujemną. Jeżeli otrzymamy wartość ujemną, zaznaczamy bit jako 0 i ignorujemy tę operację. Procedurę powtarzamy aż w wyniku odejmowania otrzymamy 0 lub dojdziemy do bitu nr 0. Konwerter z liczby dziesiętnej na dwójkową w standardzie IEEE 754 Z.Z. Podstawy informatyki 49
Standard IEEE 754 Przykład: (zapisujemy liczbę 14.5) (nadmiar 127) 1) Liczba jest dodatnia Bit31 = 0 2) ajwiększa liczba 2 w mniejsza niż 14.5 to 2 3 = 8 w = 3 3) Zapisujemy wykładnik = 127 + w = 130 10000010 4) 14.5/2 3 = 1.8125 5) odejmujemy 1 i otrzymujemy 0.8125 0.8125-1/2=0.3125 bit22 = 1 0.3125-1/4=0.0625 bit21 = 1 0.0625-1/8= -0.0625 bit20 = 0 ignorujemy operację 0.0625-1/16= 0.0 bit19 = 1 Pozostałe bity mantysy = 0 01000001011010000000000000000000 znak wykładnik mantysa Z.Z. Podstawy informatyki 50
Standard IEEE 754 Pojedyncza precyzja: mantysa 23 bity, wykładnik 8 bitów, znak 1 bit, nadmiar 2 8 /2-1 = 127 Podwójna precyzja: mantysa 52 bity, wykładnik 11 bitów, znak 1 bit, nadmiar 2 11 /2-1 = 1023 Rozszerzona podwójna precyzja: mantysa 64 bity, wykładnik 15 bitów (nadmiar 2 64 /2-1 = 16383), znak 1 bit Z.Z. Podstawy informatyki 51
Standard IEEE 754 Precyzja jest określana przez liczbę miejsc po przecinku, czyli jest określana przez mantysę. ajmniejsza wartość możliwa do zapisania w mantysie Pojedyncza precyzja: Mantysa ma 23 bity 1/2 23 1.2* 10-7 7 cyfr po przecinku Podwójna precyzja Mantysa ma 52 bity 1/2 52 2.2* 10-16 15-16 cyfr po przecinku Rozszerzona podwójna precyzja Mantysa ma 64 bity 1/2 64 5.4* 10-20 19 cyfr po przecinku Z.Z. Podstawy informatyki 52
Teksty składają się ze znaków Podstawą zapisu jest jeden bajt Znaki i teksty 1 bajt przyjmuje 256 różnych wartości ażną cechą kodowania jest jednoznaczność: przyjęcie pewnego sposobu kodowania powinno być powszechne: ASCII: 0 127 standardowe, 128 256 zależne od kraju Znaki specjalne 0-31 Spacja 32 Cyfry 48 57 ielkie litery 65 90 p. Litera : 01010111 kod binarny 87 Małe litery 97-122 Pozostałe kody: Kropka, przecinek, itd 33-47, 58-64, 91-96, 123-127 87 ASCII (American Standard Code for Information Interchange) Kod znaku Znak Z.Z. Podstawy informatyki 53
Kody UICODE 256 znaków alfanumerycznych jakie można zakodować za pomocą rozszerzonego kodu ASCII nie dawało możliwości zakodowania znaków diakrytycznych wielu języków np. polskiego. Odpowiedzią jest kod nazwany UICODE o długości 16 bitów dla każdego znaku. Daje to możliwość zakodowania 2 16, czyli 65536 znaków. Z.Z. Podstawy informatyki 54
Obrazy, dźwięki,.. Ciągi bajtów muszą przechować teksty, liczby, muzykę, animacje: wszystkie informacje zapisywane w wyniku wykonywanych działań. Potrzebne jest zakodowanie informacji, inne niż w przypadku liczb czy też tekstów. Kodowanie koloru bit = 0 bit = 1 biały czarny kolor budowany jest z kilku bitów Kodowanie rysunku obraz mapa bitowa. (plik.bmp) dokładne (formaty.tif,.gif) uproszczone (format.jpg) Kodowanie muzyki mp3 mp4 DVD Im większa precyzja tym większy rozmiar pliku Z.Z. Podstawy informatyki 55
Kompresja i szyfrowanie Kompresja Działanie mające na celu zmniejszanie objętości pliku. Przy kompresji wykorzystuje się podobieństwa i regularności występujące w plikach. Program przeprowadza analizę i wybiera fragmenty, które można zapisać w sposób zajmujący mniejszą liczbę bajtów. Kompresja bezstratna: odtworzona informacja jest identyczna z oryginałem; dekompresja jest w pełni odwracalna. Kompresja stratna: polega ona na eliminowaniu pewnych elementów oryginału, w celu lepszej efektywności kompresji. Możemy powiązać jakość ze stopniem kompresji. Szyfrowanie ajczęściej stosowane algorytmy oparte na wykorzystaniu liczb pierwszych. Informacja jest szyfrowana przed wysłaniem, odczytanie wymaga posiadania deszyfratora oraz co najmniej jednego klucza. Z.Z. Podstawy informatyki 56