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