Komputer przechowuje
Komputer przechowuje
dane w postaci cyfrowej.
dane w postaci cyfrowej.
Ta postać zaś budowana
Ta postać zaś budowana
jest w oparciu o dwójkowy
jest w oparciu o dwójkowy
pozycyjny system zapisu
pozycyjny system zapisu
liczb.
liczb.
Systemem pozycyjnym
Systemem pozycyjnym
zapisu liczb o podstawie p
zapisu liczb o podstawie p
nazywamy taki system
nazywamy taki system
zapisu liczb, który:
zapisu liczb, który:
używa wyłącznie cyfr 0,1,2,...p-1
oparty jest na następującej zależności
pomiędzy cyfrą , a jej pozycją w liczbie
...lll.ll..=...l* p
2
+l*p
1
+l*p
0
+l*p
-1
+l*p
-2
...
Przyjmujemy, że l są w tym przypadku
dopuszczalnymi cyframi rozważanego
systemu pozycyjnego.
Przykłady liczb zapisanych
Przykłady liczb zapisanych
w różnych systemach
w różnych systemach
pozycyjnych
pozycyjnych
12 – może być liczbą w systemach od
trójkowego wzwyż
198 – może być liczbą w systemach od
dziesiętnego wzwyż
istnieją systemy o podstawie p>10, z których
największe znaczenie ma szesnastkowy
(heksadecymalny) . Przykłady liczb zapisanych
w tym systemie: 13F,12, EA3,BABA.
System dwójkowy
System dwójkowy
do zapisu liczb używamy wyłącznie cyfr 0 i 1
reprezentacja pozycyjna (konwersja na
system
dziesiętny)
10011.11= 1*2
4
+0*2
3
+0*2
2
+1*2
1
+1*2
0
+
+ 1*2
-1
+1*2
-2
=19.75
110.101=1*2
2
+1*2
1
+1*2
-1
+1*2
-3
=5.625
Konwersja z systemu
Konwersja z systemu
dziesiętnego na dwójkowy-
dziesiętnego na dwójkowy-
liczby całkowite
liczby całkowite
1
4
7
3
1
0
0
1
1
1
14
(10)
=1110
(2)
3
7
1
8
9
4
2
1
0
1
0
1
0
0
1
37
(10)
=100101
(2)
Konwersja z systemu
Konwersja z systemu
dziesiętnego na dwójkowy-
dziesiętnego na dwójkowy-
liczby rzeczywiste
liczby rzeczywiste
0.2
50.5
1
0
1
0.25
(10)
=0.01
(2)
0.
3
0.6
0.
2
0.4
0.8
0
1
0
0
0.6
0.2
1
1
0.3
(10)
=0.0(1001)
(2)
Arytmetyka systemu
Arytmetyka systemu
dwójkowego
dwójkowego
podstawowe działania arytmetyczne
wykonuje się identyczne uwzględniając
fakt, że operujemy tylko cyframi 0 i 1
ewentualnymi cyframi przeniesienia mogą
być tylko 0 i 1 (dodawanie)
w przypadku mnożenia mnożymy tylko
przez 1
prostota pewnych operacji sprawia, że
działania arytmetyczne można sprowadzić
do innych operacji (np. logicznych) co
wykorzystano w arytmetyce procesora
Funkcje Boole’a
Funkcje Boole’a
Funkcją Boole’a dwóch zmiennych
nazywamy relację
z= f(x,y), która dwóm
argumentom przyjmującym
wartość 0 lub 1 przyporządkowuje
dokładnie jeden element, który
także może przyjmować wartość 0
lub 1.
Dla dwóch argumentów definiuje się
Dla dwóch argumentów definiuje się
16 różnych funkcji Boole’a. Oto
16 różnych funkcji Boole’a. Oto
przykładowe z nich
przykładowe z nich
Alternatywa z= x y
x
y
z
Koniunkcja z= x
y
x
y
z
Przykładowe funkcje
Przykładowe funkcje
algebry Boole’a -cd
algebry Boole’a -cd
Negacja z=
_
x
x
z
Różnica symetryczna z=
)
_
(
)
_
(
y
x
y
x
y
x
x
y
z
Funkcje Boole’a
Funkcje Boole’a
argumenty funkcji Boole’a ze względu na
wartości, które przyjmują sa zmiennymi
binarnymi
definicję funkcji Boole’a dla dwóch zmiennych
można uogólnić na funkcje wielu zmiennych, z
których wszystkie są zmiennymi binarnymi
dodatkowo, co ma znaczenie dla operacji
wykonywanych przez elementy elektroniczne
komputera jest możliwe swoiste złożenie funkcji
Boole’a tzn. równoległe wykonywanie funkcji
dwuargumentowych na kilku parach
argumentów
Bramka logiczna
Bramka logiczna
urządzenie, które na podstawie wartości
wejściowych tworzy wartość wyjściową
zgodnie z pewną operacja logiczną (funkcją
algebry Boole’a). Nazwy bramek
odpowiadają operacjom logicznym, które
one reprezentują: OR, AND, NOT, XOR itd.
technicznie odpowiadają one układom
elektronicznym, w których 0 i 1
reprezentuje się w postaci różnych
poziomów napięcia
Operacje logiczne na ciągach
Operacje logiczne na ciągach
bitów
bitów
Logiczne
a) negacja
NOT(10001101)=01110010
b) koniunkcja
AND (10110011,11110101)=10110001
c) alternatywa
OR (10110011,11110101)=11110111
d) różnica symetryczna
XOR (10110011,11110101)=01000110
e) nie-koniunkcja
NAND(10110011,11110101)=01001110
f) nie-alternatywa
NOR (10110011,11110101)=00001000
Operacje na bitach
Operacje na bitach
operacje arytmetyczne na bitach
można sprowadzić do operacji
logicznych ( funkcji Boole’a) lub do
operacji organizacyjnych
rozważmy dla przykładu proste
sumowanie
dwóch bitów
x
0
y
0
S
0
P
0
S
0
- wynik
P
0
- przeniesienie
Operacje na bitach cd.
Operacje na bitach cd.
od strony technicznej poprzednie
sumowanie odpowiada następującym
funkcjom Bool’ea:
S
0
=
P
0
=
x y
jeśli par bitów jest więcej (np. dwie liczby
8-bitowe) to wynik na kolejnym miejscu
otrzymujemy dodając bity kolejnej pary i
przeniesienie z poprzedniego sumowania
y
x
Dane przetwarzane przez
Dane przetwarzane przez
współczesne komputery
współczesne komputery
logiczne
liczbowe
znakowe
dźwięki i obrazy
dane złożone np. multimedialne
Wszystkie dane, nawet nieliczbowe muszą być
zakodowane w postaci liczb lub grup liczb –
dodatkowo są to liczby zapisane w systemie
dwójkowym (ciągi cyfr 0 i 1), bo tylko w takim
systemie operuje na danych komputer
Reprezentacja danych-liczby
Reprezentacja danych-liczby
całkowite bez znaku
całkowite bez znaku
naturalny kod binarny (NKB, kod prosty) –
liczba jest po prostu zamieniona na system
dwójkowy, a długość reprezentacji jest
dostosowana do długości słowa (bity
numerowane od prawej do lewej, czyli
numer bitu jest równy wykładnikowi jego
wagi binarnej). Maksymalna wartość dla
słowa 8-bitowego to 255, dla m-bitowego
(2
m
-1) np. dla m=16 jest to liczba 65535.
BKD – kodowane są odrębnie cyfry
dziesiętne liczby całkowitej każda na 4
bitach –zapis stosowany sporadycznie
Reprezentacja danych-
Reprezentacja danych-
liczby całkowite ze
liczby całkowite ze
znakiem
znakiem
Kod moduł odwrotny (znak –moduł)
Stanowi realizację NKB zapisu liczb poszerzoną
o możliwość zapisu liczb ujemnych. Ostatni bit
jest reprezentacją znaku (0 plus, 1- minus)
Np. przy 8 bitach 10001111 odpowiada liczbie
–15, a 00001111 liczbie 15
Dla 8 bitów minimalna wartość to -127
(11111111), a maksymalna to 127 (01111111)
Ogólnie dla m bitów minimalna wartość to
–(2
m-1
-1), a maksymalna to 2
m-1
-1. Gdy m=16 są to
odpowiednio liczby -32767 oraz 32767
Reprezentacja danych-
Reprezentacja danych-
liczby całkowite
liczby całkowite
Kod uzupełnieniowy do dwóch (U2)
Stanowi realizację systemu dwójkowego
zapisu liczb poszerzoną o możliwość zapisu liczb
ujemnych w efekcie innej interpretacji ostatniego
bitu, który w rozwinięciu dwójkowym liczby jest
brany ze znakiem minus
Np. przy 8 bitach 10001111 odpowiada liczbie
-113( -2
7
+2
3
+2
2
+2
1
+2
0
).
Liczba , której ostatni bit jest równy 1 jest tak jak
w kodzie moduł-odwrotny ujemna, ale ma inną
wartość.
Reprezentacja danych-
Reprezentacja danych-
liczby całkowite
liczby całkowite
Kod uzupełnieniowy do dwóch (U2) –cd.
Dla 8 bitów minimalna wartość to -128
(10000000), a maksymalna to 127
(01111111)
Ogólnie dla m bitów minimalna wartość to
–(2
m-1
), a maksymalna to 2
m-1
-1. Gdy m=16
są to odpowiednio liczby -32768 oraz 32767
Reprezentacja w kodzie
Reprezentacja w kodzie
U2-uzupełnienia
U2-uzupełnienia
najstarszy bit jest także bitem znaku
reprezentowanie liczb ujemnych jako liczb
ze znakiem upraszcza algorytmy dotyczące
operacji arytmetycznych na liczbach
reprezentowanych w tym kodzie (np.
praktycznie zbędny jest algorytm
odejmowania, a inne operacje wykonuje się
jak w NKB)
jest to najczęściej stosowany kod do
reprezentacji liczb całkowitych ze znakiem
Inne kody dla liczb
Inne kody dla liczb
całkowitych ze znakiem
całkowitych ze znakiem
kod U1- jak U2 jedynie wartość
wagi przy ostatnim bicie (bit
znaku) jest pomniejszona o 1, już
wyszedł z użycia
kod spolaryzowany – stanowi
przesunięcie NKB o pewną stałą, w
efekcie czego zero z NKB znajduje
się mniej więcej w połowie zakresu
Reprezentacja liczb
Reprezentacja liczb
całkowitych-podsumowanie
całkowitych-podsumowanie
zagadnień
zagadnień
reprezentacja zera (podwójna w kodzie moduł
odwrotny i U1) i łatwość jej wykrywania
symetryczność zakresu (tak moduł odwrotny, nie
U2)
rozpoznanie znaku liczby (w U2 i moduł odwrotny
po prostu na podstawie najstarszego bitu)
zmiana znaku liczby na przeciwny (U1-negacja
całej liczby, moduł odwrotny- negacja bitu znaku,
U2-negacja całej liczby i powiększenie jej o 1)
łatwość realizacji działań arytmetycznych (NKB-
jako pochodna działań w systemie dwójkowym,
U2-działania prowadzi się jak w NKB)
Reprezentacja
Reprezentacja
stałoprzecinkowa
stałoprzecinkowa
reprezentacja ta wynika z kodów dla liczb
całkowitych poprzez pomnożenie wag (potęg
dwójki) reprezentacji całkowitoliczbowej (NKB
-jeśli to liczba bez znaku, U2- jeśli ze znakiem)
przez wartość
2
–t
, co daje określenie stałej
ilości liczb ułamkowych i stałej dla ilości liczb
dla części całkowitej i prowadzi do mocnego
ograniczenia zakresu liczb
ograniczenie to zawęża liczby do przedziału
<
-2
s-t
, 2
s-t
>, przy czym
s
oznacza liczbę cyfr
w ogóle, a
t
stałą liczbę cyfr ułamkowych
Reprezentacja
Reprezentacja
stałoprzecinkowa
stałoprzecinkowa
•
najczęściej stosowane są dwa warianty (dwie cyfry w
części całkowitej, albo po połowie długości słowa na
część całkowitą i ułamkową)
reprezentacja stałoprzecinkowa może być stosowana
do zapisu liczb ułamkowych, ale jest mniej efektywna
niż stosowana najczęściej do zapisu liczb
rzeczywistych reprezentacja zmiennoprzecinkowa
nadmiar stałoprzecinkowy to przekroczenie zakresu
(przepełnienie) związanego z reprezentacją - bywa
często błędem o istotnych choć nie zawsze na pierwszy
rzut oka zauważalnych konsekwencjach (daje się to na
ogół zauważyć przy kodzie U2)
operacje arytmetyczne dla reprezentacji
stałoprzecinkowej wykonywane są podobnie jak w
reprezentacji całkowitoliczbowej
Reprezentacja danych-
Reprezentacja danych-
liczby rzeczywiste
liczby rzeczywiste
W systemie dziesiętnym mamy
123.45=12345 *10
-2
czyli liczbę można reprezentować w postaci pary
część znacząca (cecha) i wykładnik +ew. znak liczby.
Dodatkowo wobec konieczności jednoznacznej
reprezentacji liczby cechę można znormalizować ,
przyjmując, że jest jednocyfrowa i różna od zera
czyli 123.45=1.2345 *10
2
Pewien problem:
zera nie można przedstawić w
postaci znormalizowanej dokładnie. Przedstawia się
je np. następująco: 1.234*10
-32
. Konkretna wartość
wykładnika zależy od długości słowa.
Reprezentacja danych-liczby
Reprezentacja danych-liczby
rzeczywiste
rzeczywiste
Również w systemie dwójkowym
mamy podobną możliwość np.
101.11=0.10111 * 2
3
lub używając wyłącznie liczb
dwójkowych (kod U2 na 8 bitach) i
normalizując
1.0111 * 2
00000100
Reprezentacja danych-liczby rzeczywiste,
Reprezentacja danych-liczby rzeczywiste,
standard IEEE754
standard IEEE754
1. Obowiązuje reprezentacja postaci:
m
2
c
gdzie
m
– mantysa liczby rzeczywistej (pole ułamkowe)
c
- cecha liczby rzeczywistej (pole wykładnika)
2. Cecha jest liczbą całkowitą przechowywaną najczęściej w
kodzie spolaryzowanym (postać znormalizowana)
3. Część całkowita mantysy w postaci znormalizowanej jest
zawsze równa 1, co sprawia, że wystarczy zapamiętywać
tylko jej część ułamkową
4. Osobny bit (zero lub 1) służy do zapamiętania znaku liczby
5. Ostatecznie przechowujemy (b,u,c), gdzie
b- bit znaku liczby, u-część ułamkowa mantysy, c-cecha w
reprezentacji całkowitoliczbowej
Standard IEEE754 – najczęściej stosowane
Standard IEEE754 – najczęściej stosowane
formaty ( w nawiasach kolejno liczba bitów na
formaty ( w nawiasach kolejno liczba bitów na
poszczególne elementy reprezentacji)
poszczególne elementy reprezentacji)
IEEE Single –liczby pojedynczej precyzji
(1,8,23) – razem 32 bity
IEEE Double –liczby podwójnej precyzji
(1,11,52) –razem 64 bity
IEEE Double dla starych jednostek
procesorowych (1,15,64) – razem 80
bitów –wychodzi z użycia
liczby wysokiej precyzji (1,15,112) –
razem 128 bitów – format przyszłościowy
Konsekwencje reprezentacji
Konsekwencje reprezentacji
zmiennopozycyjnej
zmiennopozycyjnej
reprezentacja jest przybliżona więc wyniki obliczeń
również- np. błędy powstałe w wyniku zaokrąglania i
ucinania
kolejność działań może wpływać na wynik np. a+b i
b+a, gdy b jest małe
w precyzyjnych obliczeniach należy unikać
bezpośrednich porównań na rzecz porównań
stwierdzających czy dwie liczby różnią się od siebie o
więcej niż zadana dokładność
przy liczbach małej precyzji większą dokładność
gwarantuje reprezentacja całkowita (np. istniejące
formaty 24 bitowe stosowane w grafice komputerowej)
niedomiary i nadmiary (liczbę można przedstawić tylko
w ograniczonym zakresie)
Reprezentacja danych
Reprezentacja danych
-teksty
-teksty
kod ASCII (wersja prosta i rozszerzona) –
przyporządkowanie typowym znakom używanym do
tworzenia tekstu liczb całkowitych wyrażonych w
kodzie prostym
struktura kodu ASCII w wersji prostej (127 znaków)
0-31 znaki sterujące tzw. niewidoczne (nowa linia,
odstęp itd.)
32 – spacja
32- 126 – znaki widoczne (cyfry, duże i małe litery,
symbole, znaki interpunkcyjne)
127-kod specjalny
w wersji rozszerzonej 255 znaków znaki od 128
zawierają wybrane elementy alfabetu greckiego,
cyrylicy, skandynawskiego oraz symbole
pseudograficzne
Kod ASCII- fragment
Kod ASCII- fragment
32
spacja
56
8
80
P
104
h
33
!
57
9
81
Q
105
i
34
II
58
:
82
R
106
j
35
#
59
;
83
S
107
k
36
$
60
<
84
T
108
l
37
%
61
=
85
U
109
m
38
&
62
>
86
V
110
n
39
'
63
?
87
W
111
o
40
(
64
@
88
X
112
p
41
)
65
A
89
Y
113
q
42
*
66
B
90
Z
114
r
43
+
67
c
91
[
115
s
44
,
68
D
92
\
116
t
45
-
69
E
93
]
117
u
46
.
70
F
94
^
118
v
47
/
71
G
95
-
119
w
48
0
72
H
96
`
120
x
49
1
73
I
97
a
121
y
50
2
74
J
98
b
122
z
51
3
75
K
99
c
123
{
52
4
76
L
100
d
124
r
53
5
77
M
101
e
125
}
54
6
78
N
102
f
126
~
55
7
79
O
103
g
127
semigraficzny
Reprezentacja tekstów-tablice
Reprezentacja tekstów-tablice
kodowe (wiele wariantów kodów dla
kodowe (wiele wariantów kodów dla
rozszerzonej części kodu ASCII)
rozszerzonej części kodu ASCII)
ISO8859 (kilka tablic polska strona
kodowa- ISO8859-2)
Microsoft – kilkadziesiąt tablic, polska
stron CP1250
lokalne np. Mazovia, Polgaz
Istnieje przynajmniej 12 wariantów
tablic (stron kodowych) kodowania
polskich znaków narodowych
Alternatywy dla kodu ASCII
Alternatywy dla kodu ASCII
Unicode (Unikod) – kod 16 bitowy, daje
możliwość reprezentacji 65536 różnych
znaków ( a więc np. możliwość
reprezentacji najpowszechniejszych
znaków chińskich i japońskich)
ISO opracowany przez Międzynarodową
Organizację Normalizacyjną- kod 32
bitowy, ponad 17 milionów znaków
kody rodziny EBCDIC formy IBM
Grafika bitmapowa –
Grafika bitmapowa –
podstawowe fakty
podstawowe fakty
obraz ma postać cyfrową (tzw. bitmapa) i jest
odwzorowany w postaci siatki stycznych do siebie
najmniejszych niepodzielnych elementów obrazu
zwanych pikselami
barwa i położenie punktów są jednoznacznie określone,
zatem zapis takiego obrazu w pliku to zakodowana
informacja o kolorze i położeniu każdego punktu
liczba punktów składających się na obraz zależy przede
wszystkim od rozdzielczości rozdzielczość to liczba
punktów przypadających na jednostkę długości
najczęściej liczba pikseli na cal (ppi) np. rozdzielczość
72 ppi to 72x72=5184 piksele na każdy cal
kwadratowy
Grafika bitmapowa –
Grafika bitmapowa –
o barwach
o barwach
w przestrzeni kolorów RGB kolor każdego
piksela reprezentują trzy składowe, a więc
24 bity, obraz w grafice bitmapowej może
być naturalnie obrazem czarno-białym
oznacza to tzw. 24-bitową głębię koloru.
Głębia koloru
to liczba bitów niezbędna do
zakodowania barw jednego punktu , a z
niej wynika liczba możliwych do uzyskania
kolorów ( w przypadku modelu RGB
będzie to więc 2
24
)
Najpopularniejsze
Najpopularniejsze
standardy zapisu obrazu
standardy zapisu obrazu
bitmapowego
bitmapowego
BMP (obraz nieskompresowany, od 1 do 32 bitów na
reprezentację kolorów, pliki bardzo dużej wielkości)
JPEG (obraz poddany kompresji, nadający się do
publikacji obrazów w sieci i prezentacjach
multimedialnych, głębia 24-bitowa lub 32-bitowa)
GIF (obraz poddany kompresji,nadający się do wykresów
czy rysunków,zawierających duże jednobarwne pola,
raczej zupełnie nie do zdjęć, głębia 8 bitowa co daje 256
kolorów)
PNG (ulepszony GIF w aspekcie kompresji, a także głębi-
true color), wyposażony w gamę dodatkowych efektów
opartych na półprzezroczystości obrazu jak tworzenie
realistycznych cieni czy też gładkich krawędzi grafik
Grafika wektorowa-idea
Grafika wektorowa-idea
obraz jest zapamiętany za pomocą
wzorów matematycznych
zapamiętujących jego elementy np.
odcinek to para punktów, okrąg to
środek i promień jako charakterystyki
jego położenia itp.
Uwaga ! Nie istnieje tu pojęcie
rozdzielczości obrazu
Wybrane formaty: EPS, PDF,PS,SVG
Reprezentacja danych –wybrane
Reprezentacja danych –wybrane
problemy związane z reprezentacją
problemy związane z reprezentacją
grafiki
grafiki
i pokrewnych złożonych postaci
i pokrewnych złożonych postaci
informacji
informacji
charakterystyki dźwięku w następstwie tzw.
próbkowania sprowadza się do postaci cyfrowej
w przypadku plików dźwiękowych istnieją różne ich
formaty (mid, wav, mp3, mp4 itd.)
omówione problemy zwielokrotniają się przy plikach o
naturze jeszcze bardziej złożonej, multimedialnej
(grafika trójwymiarowa, animacyjna, video, dźwięk
stereofoniczny), a rozmiary takich plików są bardzo
duże – wiąże się to z potrzebą zapamiętania
dodatkowej składowej (grafika 3D), sekwencji obrazów
statycznych (film), dodatkowego kanału (dźwięk
stereo) lub osobno dźwięku i obrazu (pliki audio)
Reprezentacja danych, a organizacja
Reprezentacja danych, a organizacja
pamięci
pamięci
podstawowa adresowalna komórka pamięci ma rozmiar
jednego bajtu, tymczasem dane to często ciągi
wielobajtowe w związku z tym muszą być
przechowywane w kolejnych komórkach pod kolejnymi
adresami
bajty są pogrupowane w słowa pamięci, które są dłuższe
niż słowo procesora, co pozwala zwiększyć wydajność
pamięci poprze transmitowanie większej porcji danych
przy jednorazowym dostępie
dostęp do danych umieszczonych w jednym słowie
pamięci jest szybszy niż w przypadku, gdy dane stanowią
fragmenty różnych słów pamięci stąd współczesne
architektury komputerów wymuszają umieszczenie
danych w jednym słowie
Kompresja danych
Kompresja danych
Zespół technik stosowanych w celu
zmniejszenia rozmiaru danych
wynikłego z ich reprezentacji.
Podstawową wielkością
charakteryzującą jakość kompresji jest
współczynnik kompresji. Kompresja
dzieli się na stratną i bezstratną.
Wybrane techniki
Wybrane techniki
kompresji
kompresji
kodowanie grupowe- stosowana np. do plików BMP
kodowanie względne (pamiętanie różnic między
blokami danych, a nie całych bloków, efektywne przy
mało różniących się blokach danych, np. ramki
filmu)
kody zależne od częstości wystąpień (im częściej
występuje sekwencja bitów czyli element danych
tym krótszy kod) – algorytm Huffmana dla
kodowania tekstów
kodowanie Lempela Zivego jako przykład kodu
uniwersalnego, technika znana z programów typu
WinZip czy WinRar,
kompresja JPEG (typowa dla grafiki) –kompresja
stratna stosowana dla danych graficznych