Dane, informacja, programy
Transkrypt
Dane, informacja, programy
Dane, informacja, programy Kodowanie danych, kompresja stratna i bezstratna DANE Uporządkowane, zorganizowane fakty. Główne grupy danych: tekstowe (znaki alfanumeryczne, znaki specjalne) graficzne (ilustracje, rysunki, fotografie) dźwiękowe (audio-data) filmowe (video-data): - animacja - ruch rzeczywisty Dane a informacja Dane Przetwarzanie Informacja Ang.: information – meaningful piece of data UWAGA: Procesor przetwarza tylko cyfrową reprezentację danych, a więc ciągi zer i jedynek. Dane (wszystkie 4 grupy) i programy muszą być zakodowane. Systemy kodowania danych Oparte na systemie binarnym. Przykład: litera H – kod ASCII 72 binarnie – 01001000 (26+23=64+8) litera I – kod ASCII 73 binarnie – 01001001 (26+23+20=64+8+1) Napis HI na klawiaturze Kodowanie w systemie ASCII Przetwarzanie przez procesor Dekodowanie Ekran Jednostki pamięci dla danych BIT (Binary Digit) Bajt=8 bitów Wielokrotności bajtów Nazwa Symbol Mnożnik dziesiętny Mnożnik binarny Kilobajt kB 103 210 Megabajt MB 106 220 Gigabajt GB 109 230 Terabajt TB 1012 240 Petabajt PB 1015 250 Eksabajt EB 1018 260 Zettabajt ZB 1021 270 Jottobajt JB 1024 280 Systemy liczbowe • • • • Dziesiętny: 0,1,…, 9 Dwójkowy (binarny, cyfrowy): 0,1 Ósemkowy (oct): 0,1,…,7 Szestnastkowy (heksadecymalny): 0,1,…,9,A,B,…,F Przykład: (248)10=(11111000)2=(370)8=(F8)16 bo: Przykład –c.d. tak, jak 248=2*102+4*101+8*100 analogicznie (11111000)2=1*27+1*26+1*25+1*24+1*23=(248)10 (370)8=3*82+7*81=3*64+56=192+56=(248)10 (F8)16=15*161+8*160=240+8=(248)10 Przykładowe systemy kodowania (dla danych tekstowych) • ASCII (American Standard Code for Information Interchange) – jednobajtowy, oparty na unikalnej kombinacji 8 bitów, pozwala zakodować 256 znaków • EBCDIC (Extended Binary-Coded Decimal Interchange Code) – też 8-bitowy, IBM • UNICODE (unikod) – 32-bitowy, zdolny zakodować ponad mln znaków, uniwersalny Przykłady kodów ASCII i UNICODE Znak Kod ASCII Wartości bitów 32 00100000 A 65 01000001 C 67 01000011 a 97 01100001 7 55 00110111 Uwaga: cyfra 7 ma reprezentację dwójkową 00000111 Unicode: Znak Kod dziesiętnie Kod szestnastkowo Ą 260 0104 Ć 262 0106 D 270 010E Reprezentacja cyfrowa liczby rzeczywistej Liczba n-cyfrowa w systemie dziesiętnym ma postać: dn-1…d1d0 gdzie dn-1, …, d1,d0 są cyframi dziesiętnymi, czyli należą do zbioru {0,1,…,9} Wartość tak zapisanej liczby dziesiętnej wynosi: dn-1*10n-1+…+d1*101+d0*100 Analogiczną postać ma reprezentacja liczby naturalnej w systemie dwójkowym. Podstawa zmienia się z 10 na 2, a zestaw cyfr ogranicza się do dwóch: 1 oraz 0. Czyli liczba postaci: cn-1…c1c0 gdzie cn-1, …, c1,c0 są bitami i należą do zbioru {0,1} ma wartość cn-1*2n-1+…+c1*21+c0*20 Przykład: Liczba 11001 w systemie dwójkowym oznacza wartość 24+23+20=25 Liczby ujemne w zapisie dwójkowym poprzedza się znakiem minus, reprezentowanym przez dodatkowy bit – tzw. bit znaku. Cyfra 1 na bicie znaku oznacza minus w zapisie liczby ujemnej, a 0 występuje przed liczbami nieujemnymi. A więc liczba 25 z bitem znaku ma reprezentację binarną 011001, a liczba -25: 111001 (bit znaku oznaczony czerwono) W zapisie binarnym liczby rzeczywistej uwzględnia się część całkowitą i ułamkową. Jeżeli na część całkowitą przeznaczy się n bitów, a na część ułamkową k bitów, to binarna reprezentacja liczby rzeczywistej będzie miała postać cn cn-1 … c1 c0 c-1 … c-k, gdzie cn – bit znaku cn-1 … c1 c0 – kolejne cyfry binarnego rozwinięcia części całkowitej liczby c-1 … c-k – kolejne cyfry binarnego rozwinięcia części ułamkowej liczby Zatem ciąg bitów cn cn-1 … c1 c0 c-1 … c-k reprezentuje wartość równą (-2*cn+1)*( cn-1*2n-1+…+c1*21+c0*20+c-1*2-1+ … +c-k*2-k), gdzie pierwszy czynnik nadaje znak liczbie, ponieważ: −1 𝑔𝑑𝑦 𝑐𝑛 = 1 -2*cn+1= 1 𝑔𝑑𝑦 𝑐𝑛 = 0 Przykład: Załóżmy, że n=k=8 Wtedy liczba 12,625 będzie miała rozwinięcie binarne postaci: 0 00001100 10100000, bo 0,625=0,5+0,125=2-1+2-3 A liczba -127,3125 ma rozwinięcie postaci: 1 01111111 01010000, bo 0,3125=0,25+0,0625=2-2+2-4 Kod uzupełnieniowy liczby całkowitej Inny sposób reprezentacji liczby: 𝐱 𝐮𝐳𝐮𝐩 𝐱 = 𝐧 𝟐 − 𝐱 𝐠𝐝𝐲 𝐱 ≥ 𝟎 𝐠𝐝𝐲 𝐱 < 𝟎 gdzie 𝐱 oznacza wartość bezwzględną 𝐱, natomiast 𝐧 jest liczbą bitów na reprezentację liczby (łącznie z bitem znaku). Przykład: n=8 liczba -75 w kodzie uzupełnieniowym przybiera postać 10110101, ponieważ I-75I=01001011, 28=100000000, dla Zatem 28-I-75I= 100000000-01001011=10110101 Kod uzupełnieniowy dla ułamków wyraża się wzorem: 𝐱 𝐝𝐥𝐚 𝐱 ≥ 𝟎 𝐱𝐮𝐳𝐮𝐩 = 𝟐 − 𝐱 𝐝𝐥𝐚 𝐱 < 𝟎 Dokładność obliczeń Liczby całkowite – system stałoprzecinkowy Dokładne wartości, ale mały zakres, bo: na 1 bajcie – albo tylko liczby dodatnie z przedziału (0; 255) albo dodatnie i ujemne z (-128; 127) Na 2 bajtach – analogicznie tylko liczby dodatnie z przedziału (0; 65 535) albo dodatnie i ujemne z przedziału (-32 768; 32 767) Liczby rzeczywiste – problem przy zapisie stałoprzecinkowym, bo: jeszcze mniejszy zakres wartości oraz marnotrawstwo bitów. Poza tym – błędy odczytów i błędy reprezentacji cyfrowej. Przykład (na mały zakres): 2 bajty – 1 przeznaczony na część całkowitą i 1 na część ułamkową Wtedy największa wartość rzeczywista zapisana na 2 bajtach to: 11111111,11111111 a więc 𝟐𝟓𝟓 𝟐𝟓𝟓 𝟐𝟓𝟔 Przykład (na marnotrawstwo bitów): Przy założeniu jak wyżej reprezentacja liczby 0,5 ma postać: 00000000,10000000 Przykład (na błędy reprezentacji): a) 1 0 0 0 0 0 0 0 , 0 0 0 0 0 0 0 1 I 1 1 0 1 0 1 b) 0 0 0 0 0 0 0 1 , 0 0 0 0 0 0 0 1 I 1 1 1 1 1 c) 0 0 0 0 0 0 0 0 , 0 0 0 0 0 0 0 1 I 1 0 1 1 1 Zawsze odcinamy dziewiąty bit, czyli wartość 1 1 −9 2 = 9= = 0,001953125 2 512 Jest to błąd bezwzględny reprezentacji tych liczb. Policzmy błąd względny w każdym z tych przypadków, wiedząc że 1 1 −8 2 = 8= = 0,00390625 2 256 a) 0,001953125 128,00390625 b) 0,001953125 1,00390625 ∗ 100% ≅ 0,194552% c) 0,001953125 0,00390625 ∗ 100% ≅ 50% ∗ 100% ≅ 0,001526% Czyli: błąd względny reprezentacji binarnej liczby w zapisie stałoprzecinkowym zależy od wielkości tej liczby! Zapis zmiennoprzecinkowy – liczba zmiennopozycyjna Liczba przechowywana w komputerze w znormalizowanej postaci wykładniczej: L=M*NC M – mantysa <1, mantysa znormalizowana mieści się w przedziale <0,1 ;1) N – podstawa sytemu (potęgi) C – cecha, czyli wykładnik potęgi, dzięki któremu przecinek w liczbie zostaje przesunięty tak, aby utworzyć mantysę w zgodzie z powyższą definicją Przykłady: 2340,23=0,234023*104 C=4 2,34023=0,234023*101 C=1 0,15934=0,15934*100 C=0 0,00015934=0,15934*10-3 C=-3 W takim zapisie gwałtownie zwiększa się zakres wartości reprezentowanych liczb. Przykład: Przy reprezentacji 2-bajtowej, z czego 1 bajt przeznaczony jest na reprezentację cechy i 1 na reprezentację mantysy, liczba 000000111 0100 000 c ec ha mant y s a przedstawia wartość 0,625*103 Ważne: przy obliczaniu błędu względnego wartość cechy nie ma znaczenia! 𝑏łą𝑑∗𝑁𝐶 𝑙𝑖𝑐𝑧𝑏𝑎∗𝑁𝐶 ∗ 100% = 𝑏łą𝑑 𝑙𝑖𝑐𝑧𝑏𝑎 ∗ 100% Policzmy największy możliwy błąd bezwzględny przy zapisie zmiennopozycyjnym w naszym przykładzie: Najmniejsza mantysa (0,1000000)2=(0,5)10 Największy błąd bezwzględny – gdy obcinamy bity z samymi jedynkami, czyli 1 1 1 −9 −10 −11 2 +2 +2 +⋯= + + +⋯ 512 1024 2048 1 2 1 512 = = = = 0,00390625 1 512 256 1− 2 (bo suma nieskończonego ciągu geometrycznego 𝑎0 𝑆= ) 1−𝑞 Stąd : Maksymalny błąd względny, obliczany jako iloraz maksymalnego błędu bezwzględnego i najmniejszej mantysy, wynosi 0,00390625 ∗ 100% ≅ 0,78123 0,5 Wnioski: Przy 1 bajcie na mantysę błąd względny < 0,8% (górna granica błędu) Cecha jednobajtowa daje nam już zakres (gdy dodatnie i ujemne) 2128 ≅ 3,4 ∗ 1038 oraz 2−127 ≅ 5,8 ∗ 10−39 Zatem: Za dokładność reprezentowanych liczb odpowiada mantysa Za zakres wartości tych liczb odpowiada cecha RGB (Red – Green – Blue) Addytywne mieszanie barw RGB Sześcian kolorów RGB RGB Piksele RGB (czerwony-zielony-niebieski) w telewizorze typu LCD: po prawej – zbliżenie pokazujące kolory pomarańczowy i niebieski, po lewej – jeszcze większe zbliżenie pikseli tworzących te kolory CMYK (Cyjan – Magenta – Yellow – Black) C cyjan (ang. cyan) magenta M (ang. magenta) Y K żółty (ang. yellow) czarny (ang. Black) http://www.antyradio.pl/Technologia/Inter net/Jak-wyglada-sekunda-w-internecie-7625