background image

Reprezentacja podstawowych 

informacji w systemach 

informatycznych dla medycyny

Wykład nr 4 z kursu IT dla 

Wykład nr 4 z kursu IT dla 

Inżynierii Biomedycznej 

prowadzonego przez 

Prof. Ryszarda Tadeusiewicza

background image

Komputery nie są urządzeniami, które 
istnieją „same dla siebie”.

Ich użyteczność wynika z tego, że z pomocą technologii informacyjnych 
można:

• rejestrować, 

• ewidencjonować, 

2

• opisywać, 

• badać, 

• analizować,

• sterować

• i przewidywać...

różne fakty dotyczące rzeczywistego świata. 

Aby to było możliwe – fakty te trzeba właściwie 

odwzorowywać

w rejestrach 

i pamięciach systemów komputerowych. Przywołuje to problem 

background image

... reprezentacji danych w 
systemach informatycznych

3

background image

Reprezentacja informacji w systemach 
komputerowych



Wszelkie informacje przetwarzane, 
przechowywane oraz przesyłane 
w systemach komputerowych mają postać 
binarną

4



Jeśli są to dane liczbowe, to są ona zapisane w 
systemie dwójkowym
, czyli w systemie 
pozycyjnym o podstawie 2



Jeśli są to dane inne niż wartości liczbowe, to są 
one 

kodowane za pomocą symboli binarnych.



Sygnały (dźwięki, obrazy, rejestracje EKG itd. są 
umieszczane w komputerze jako tablice liczb.

background image

Jednostki ilości informacji

5

background image

Reprezentacja wartości liczbowych.

6

Reprezentacja wartości liczbowych.

background image

Pozycyjne systemy liczenia (1)



Każda liczba całkowita 

≥ 2 może być 

podstawą systemu liczenia (mówimy 
wówczas o systemie o podstawie N
).



System dziesiętny (system o podstawie 

7

System dziesiętny (system o podstawie 
równej 10) jest przykładem pozycyjnego 
systemu liczenia



System binarny jest także  przykładem 

pozycyjnego

systemu liczenia

background image

Pozycyjne systemy liczenia (2)



Do zapisu liczb wykorzystywane są cyfry:



w systemie dwójkowym: 0, 1;



w systemie dziesiętnym: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;



w systemie ósemkowym: 0, 1, 2, 3, 4, 5, 6, 7;



w systemie szesnastkowym: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 

8



w systemie szesnastkowym: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 
A, B, C, D, E, F;



w systemie o podstawie N: 0, 1, ..., N - 1



Cechą charakterystyczną systemów pozycyjnych jest 
to, że wartość cyfry uzależniona jest od jej pozycji.

background image

Przykłady zapisów liczb i ich interpretacja 
w różnych systemach pozycyjnych

9

background image

To, co warto zapamiętać:

10

background image

Obliczanie wartości liczby (1)



system dziesiętny (system o podstawie 10)

353

(10)

= 3 * 100 + 5 * 10 + 3 * 1 = 3 * 10

2

5 * 10

1

+ 3 * 10

0

11

5 * 10 + 3 * 10

2,4

(10)

= 2 * 1 + 4 * 0,1 = 2 * 10

0

+ 4 * 10

-1

=

i

i

i

c

W

10

background image

Obliczanie wartości liczby (2)



System dwójkowy (system o podstawie 2)



Analizowana liczba 101,11

(2)

12

=

i

i

i

c

W

2

background image

Obliczanie wartości liczby (3)



Uogólnienie: 

System o podstawie N

=

i

i

i

N

c

W

13

background image

Zamiana liczb dziesiętnych na system 
binarny (1)

14

background image

Zamiana liczb dziesiętnych na system 
binarny (2)

15

background image

Zamiana liczb dziesiętnych na system 
binarny (3)

Wniosek: ułamek 
dziesiętny o skończonej 

16

dziesiętny o skończonej 
liczbie cyfr może wymagać 
ułamka binarnego o 
nieskończonej liczbie cyfr.

background image

System szesnastkowy



dzielimy liczbę binarną na grupy po 4 cyfry -
w lewo i prawo rozpoczynając od pozycji 
separatora dziesiętnego;



wartość każdej wydzielonej grupy zapisujemy 

17

wartość każdej wydzielonej grupy zapisujemy 
za pomocą jednej cyfry szesnastkowej.



Przykład:

1111100000

(2)

= ?

(16)

0011  |  1110  |  0000 = 3E0
1111100000

(2)

= 3E0

(16)

background image

Zamiana liczby binarnej na heksadecymalną 
(nad cyframi napisano wagi pozycji):

18

background image

Przyczyny stosowania systemu 
szesnastkowego



znacznie większa zwięzłość zapisu 
porównaniu z zapisem binarnym (4 cyfry 
binarne = 1 cyfra szesnastkowa)



prosta konwersja pomiędzy systemem 

19

prosta konwersja pomiędzy systemem 
binarnym i szesnastkowym



liczba bitów w jednej komórce jest zwykle 
wielokrotnością liczby 4, co znacznie ułatwia 
przedstawienie jej zawartości w systemie 
szesnastkowym.

background image

Reprezentacja liczb całkowitych (1)

a)

liczby całkowite bez znaku



na kolejnych bitach przechowywane są 
poszczególne cyfry binarne



Np. liczba 41

(10)

w komórce ośmiobitowej 

20

(10)

przechowywana jest w następujący sposób:

background image

Reprezentacja liczb całkowitych (2)

b)

prosta reprezentacja liczb całkowitych ze 
znakiem (reprezentacja typu znak-moduł, 
reprezentacja bezpośrednia)



Kodowanie informacji o znaku:

21



plus 



0



minus 



1



Np. liczba -41 w komórce ośmiobitowej 
przechowywana jest w następujący sposób:

background image

Reprezentacja liczb całkowitych (3)



Wady reprezentacji znak-moduł:



możliwe są dwa sposoby reprezentacji zera:

10000000

00000000

22



występują problemy przy realizacji obliczeń na 
liczbach ujemnych (np. -2 + 3)

10000010

(-2)

00000011

(+3)

10000101

(-5) 

background image

Reprezentacja liczb całkowitych (4)

c)

kod uzupełnieniowy



Kod uzupełnieniowy służy do reprezentacji 
liczb całkowitych:



liczby całkowite nieujemne przyjmują 

23

postać:

bit znaku, moduł liczby

background image

Reprezentacja liczb całkowitych (5)



liczby całkowite ujemne przyjmują postać:

bit znaku, uzupełnienie do dwóch modułu liczby

24

background image

Reprezentacja liczb całkowitych (6)



Pojęcie „uzupełnienia do dwóch”



Uzupełnieniem do dwóch dodatniej liczby binarnej zapisanej 

na bitach jest wartość wyrażona wzorem:

u = 2

N

– b.



Należy zauważyć, że 2

N

jest wartością większą o jeden od 

największej liczby zapisanej na bitach – czyli liczby 

25

największej liczby zapisanej na bitach – czyli liczby 

składającej się z jedynek.



Przykład:

Niech = 4. 
Poszukujemy uzupełnienia do dwóch liczby = 0011

(2)

= 3

(10)

2

N

= 2

4

= 16

(10)

= 10000

(2)

2

N

– b = 16

(10)

– 3

(10)

= 13

(10)

= 1101

(2)

Uzupełnieniem do dwóch liczby 0011

(2)

jest 1101

(2)

.

background image

Reprezentacja liczb całkowitych (7)



Przykład: Przedstaw wartość -41

(10)

w kodzie 

uzupełnieniowym w komórce 8-bitowej

26

background image

Reprezentacja liczb całkowitych (8)



Zamiana pomiędzy reprezentacją w kodzie 
prostym i uzupełnieniowym



zapis liczby dodatniej w kodzie prostym i 
uzupełnieniowym jest identyczny;

27



konwersja liczby ujemnej z zapisu w kodzie 
prostym na kod uzupełnieniowy (lub z kodu 
uzupełnieniowego na prosty):



dokonaj negacji wszystkich bitów z wyjątkiem bitu 
znaku,



do otrzymanej wartości dodaj (binarnie) jedynkę.

background image

Reprezentacja liczb całkowitych (9)



Przykład:



Przedstaw sposób reprezentacji w kodzie 
uzupełnieniowym w komórce 8-bitowej liczby 
-41

(10)

.

28

-41

(10)

.

10101001

(2)

,

kod prosty

11010110

(2)

,

negacja wartości (bez bitu znaku)

00000001

(2)

,

jedynka

11010111

(2)

,

suma (wart. w kodzie uzupeł.)

background image

Reprezentacja liczb całkowitych (10)



Zamiana wartości z kodu uzupełnieniowego na 
system dziesi
ętny



Kolejnym pozycjom przypisywane są 
współczynniki będące kolejnymi potęgami liczby 2, 
przy czym współczynnik odpowiadający pozycji 

29

przy czym współczynnik odpowiadający pozycji 
wysuniętej najbardziej w lewo (bit znaku) 
uwzględniany jest ze znakiem minus 



Przy konwersji na system dziesiętny sumowane 
są współczynniki znajdujące się na pozycjach 
jedynek w rozpatrywanej liczbie binarnej.

background image

Reprezentacja liczb całkowitych (11)



Przykład:



przedstaw w systemie dziesiętnym wartość 
wyrażoną w kodzie uzupełnieniowym jako 
10000011 

30

background image

Reprezentacja liczb całkowitych (12)



Przykład:



przedstaw w systemie dziesiętnym wartość 
wyrażoną w kodzie uzupełnieniowym jako 
10000000 

31

background image

Reprezentacja liczb całkowitych (13)



Kod uzupełnieniowy:



trudny do stosowany dla człowieka,



ułatwia wykonywanie działań na liczbach 
całkowitych ze znakiem - w trakcie obliczeń bit 

32

znaku jest traktowany w taki sam sposób jak 
pozostałe bity.

background image

Reprezentacja liczb całkowitych (14)

Przykład

:

-2 + 3
-2

10000010

(kod prosty)

11111101

(negacja, bez bitu znaku)

00000001

(jedynka)

11111110

(kod uzupełnieniowy)

33

11111110

(kod uzupełnieniowy)

+3

00000011

(kod prosty)

00000011

(kod uzupełnieniowy)

-2 + 3

11111110

(-2, kod uzupełnieniowy)

00000011

(+3, kod uzupełnieniowy)

1 00000001

(wynik, kod uzupeł., bit  przeniesienia jest ignorowany)

00000001

(wynik, kod prosty)

background image

Reprezentacja liczb całkowitych (15)



Cechy maszynowej reprezentacji liczb całkowitych:



w systemach komputerowych mogą być reprezentowane 

wartości całkowite z pewnego zakresu - uzależnionego od:



liczby bitów przeznaczonych na przechowywanie jednej 

wartości numerycznej,



przyjętego sposobu reprezentacji.

34



wartości całkowite mieszczące się w dopuszczalnym 

zakresie przechowywane są w sposób dokładny



wyniki obliczeń realizowanych na liczbach całkowitych są 

dokładne (pod warunkiem, że mieszczą się na przyjętej 

liczbie bitów)



podstawowym problemem mogącym pojawić się w trakcie 

obliczeń na liczbach całkowitych jest ąd nadmiaru -

powstaje wtedy, gdy wynik nie mieści się na przyjętej liczbie 

bitów

background image

ilość 
bitów

nazwa

zakres

8

char

−128 — +127 (ze znakiem)
0 — +255 (bez znaku)

16

short int

−32 768 — +32 767 (ze znakiem)

35

16

short int

0 — +65 535 (bez znaku)

32

intlong int

−2 147 483 648 — +2 147 483 647 (ze znakiem)
0 — +4 294 967 295 (bez znaku)

64

long long int

−9 223 372 036 854 775 808 — +9 223 372 036 854 775 807 
(ze znakiem)
0 — +18 446 744 073 709 551 615 (bez znaku)

background image

Reprezentacja liczb rzeczywistych (1)



Do reprezentacji wartości rzeczywistych 
stosuje się:



reprezentację stałopozycyjną 
(stałoprzecinkową),

36



reprezentację zmiennopozycyjną 
(zmiennoprzecinkową, półlogarytmiczną).

background image

Reprezentacja liczb rzeczywistych (2)



Reprezentacja stałopozycyjna:



do przechowania jednej wartości rzeczywistej 
wykorzystuje się bitów,



bit najbardziej wysunięty w lewo przechowuje 

37

informację o znaku liczby (0 - dodatnia, 1 -
ujemna)



liczba bitów służących do przechowania 
części całkowitej i części ułamkowej jest stała 
(stała jest pozycja separatora dziesiętnego -
stąd określenie stałopozycyjny).

background image

Reprezentacja liczb rzeczywistych (3)



Przykład zastosowania reprezentacji 
stałopozycyjnej:



do przechowania jednej wartości rzeczywistej 
przeznaczono 32 bity, przy czym 

38

background image

Zapis liczb rzeczywistych w komputerze 
nawiązuje do wykładniczego zapisu liczb, 
stosowanego także w arytmetyce dziesiętnej

39

background image

Reprezentacja liczb rzeczywistych (4)



Cechy reprezentacji stałopozycyjnej:



w systemie komputerowym mogą być przechowywane wartości 

rzeczywiste z pewnego zakresu,



komputerowa reprezentacja liczb rzeczywistych ma charakter 
dyskretny 
(a nie ciągły),

0.00000000(2) = 0

(10)

40

0.00000000(2) = 0

(10)

0.00000001(2) = 1*2

-8

= 1/256 = 0,00390625

0.00000010(2) = 1 * 2

-7

= 1/128 = 0,0078125

0.00000011(2) = 1 * 2

-7

+ 1 * 2

-8

= 0,01171875

......

więc np. liczba 0,005

(10)

= 0,0000000101...

(2)

Liczby rzeczywiste 

nie są 

przechowywane w sposób dokładny!!!

background image

Reprezentacja liczb rzeczywistych (5)



Cechy reprezentacji stałopozycyjnej:



pamięć przeznaczona do przechowywania wartości 

rzeczywistej nie jest wykorzystywana w sposób 

optymalny

np. wartość 0,0000011111 przechowywana jest 

41

np. wartość 0,0000011111

(2)

przechowywana jest 

jako:

0

00000000000000000000000

00000111

Pominięte zostały dwie ostatnie cyfry, a część 

przeznaczona na przechowywanie części 

całkowitej nie jest wykorzystana!

background image

Reprezentacja liczb rzeczywistych (6)



Cechy reprezentacji stałopozycyjnej:



może wystąpić błąd nadmiaru

np. liczba złożona z „1” i dwudziestu pięciu „0” nie 
może być przechowywana

42

background image

Reprezentacja liczb rzeczywistych (7)



Reprezentacja zmiennopozycyjna 

(zmiennoprzecinkowa, półlogarytmiczna)



Każda liczba rzeczywista może być 

przedstawiona w postaci:

mantysa * 2 

cecha

43

mantysa * 2 

cecha

gdzie:
mantysa jest wartością rzeczywistą (dodatnią lub 

ujemną),

cecha jest wartością całkowitą (dodatnią lub ujemną).



Stosując reprezentację zmiennopozycyjną w 

systemie komputerowym przechowywana jest 

mantysa oraz cecha liczby.

background image

Liczby rzeczywistej mogą być w pojedynczej (float

i w podwójnej (double) dokładności (wg. norm IEEE 754)

Załóżmy, że to liczba cyfr przeznaczonych na mantysę, natomiast n+1 to liczba 
cyfr przeznaczonych na wykładnik (cyfr dla wartości i 1 dla znaku wykładnika).

44

Uznaje się również, że jedna dodatkowa pozycja (najstarsza) zarezerwowana 

jest dla zapisu znaku całej liczby. Wówczas wartości maksymalne i minimalne dla 
określone są następująco:

Wykładnik E

E

min

= − B

n

+ 1 

E

max

B

n

− 1 

Mantysa M

M

min

= 1 

M

max

− B

− (− 1)

background image

Stąd najmniejsza i największa liczba dodatnia 
możliwa do zapisania w takiej reprezentacji to:

Jeśli komputer wygeneruje w trakcie obliczeń liczbę o wartości bezwzględnej 

|x| < x

min

to uważa się, że jest to wartość błędna (underflow), 

zwykle zamieniana na 0

.

Jeśli komputer wygeneruje w trakcie obliczeń liczbę o wartości bezwzględnej 

|x| > x

max

to uważa się, że jest to wartość błędna (overflow) co 

zwykle przerywa obliczenia!

background image

Reprezentacja liczb rzeczywistych (9)



Przykładowa liczba: 7(10) = 111(2)

111 = 111 * 2

0

= 11,1 * 2

1

= 1,11 * 2

10

= 0,111 * 2

11



zawsze wybiera się taki sposób reprezentacji, w 
którym mantysa (w zapisie binarnym) zaczyna się od 
0,1…. Dzięki temu nie ma potrzeby zapamiętywania 

46

0,1…. Dzięki temu nie ma potrzeby zapamiętywania 
znaków „0,”. Prezentacja spełniająca ten warunek 
określana jest jako znormalizowana.



Ostatecznie, liczba rzeczywista 7 przechowywana 
jest w postaci:

0111000000000011

background image

Reprezentacja liczb rzeczywistych (10)



Cechy prezentacji zmiennopozycyjnej:



zbiór reprezentowanych wartości jest: 



ograniczony,



dyskretny,



liczby rzeczywiste nie są przechowywane w 

47



liczby rzeczywiste nie są przechowywane w 

sposób dokładny - szczególnie niebezpieczne 

jest kumulowanie się błędów w trakcie 

obliczeń,



reprezentacja zmiennopozycyjna pozwala 

zwykle na lepsze wykorzystanie pamięci niż 

reprezentacja stałopozycyjna.

background image

Reprezentacja liczb rzeczywistych (11)



Wybór pomiędzy reprezentacją stało-
i zmiennopozycyjn
ą



Reprezentacja zmiennopozycyjna:



możliwość reprezentowania wartości z większego 
zakresu.

48

zakresu.



Reprezentacja stałopozycyjna:



wartości reprezentowane są z taką samą 
dokładnością (co jest istotne np. w obliczeniach 
finansowych).

background image

Maszynowa reprezentacja informacji 

49

Maszynowa reprezentacja informacji 

nienumerycznych.

background image

Reprezentacja znaków



W systemie komputerowym każdy tekst 
przechowywany jest w postaci binarnej 



Jest to możliwe, ponieważ każdy znak (litera, 
cyfra, znak przestankowy itp.) jest zamieniany 

50

cyfra, znak przestankowy itp.) jest zamieniany 
kod znaku (będący liczbą całkowitą).



Liczbami binarnymi są także informacje 
sterujące, określające format tekstu (na 
przykład wielkość i kolor czcionki, rozmiar 
strony, wielkość marginesu itp.)

background image

Kod ASCII



ASCII - American Standard Code for 
Information Interchange.



w wersji podstawowej - 7 bitowy (128 znaków)



w wersji rozszerzonej - 8 bitowy (256 znaków)

51

w wersji rozszerzonej - 8 bitowy (256 znaków)

background image

Kod ASCII

52

background image

Kod ASCII

53

background image

Kod ASCII – problem polskich 
znaków



Znaki specyficzne dla języka polskiego 

(ąćęłńóśżźĄĆĘŁŃÓŚŻŹ) przypisane mają kody 

większe od 128  utrudnia to proces sortowanie, 

wyszukiwania i porządkowania danych!!!



Istnieją różne sposoby kodowania polskich znaków 
 utrudnia to wymianę dokumentów tekstowych 

pomiędzy różnymi systemami.

54

 utrudnia to wymianę dokumentów tekstowych 

pomiędzy różnymi systemami.



Podstawowe sposoby kodowania polskich znaków:



MS Windows CP 1250 (Windows Latin-2, Windows-

1250) - sposób kodowania wprowadzony przez firmę 

Microsoft wraz z systemem Windows 3.11 PL



ISO Latin-2 (ISO-8859-2, Polska Norma PN-93 T-

42118) - sposób kodowania określony przez ISO, 

stosowany powszechnie w Internecie.

background image

Polskie znaki – standardy kodowania

55

background image

Unicode (Unikod)



Unikod (ang. Unicode lub UCS - Universal Character 
Set
) – sposób kodowania znaków uwzględniający 
większości wykorzystywanych znaków w różnych 
językach na całym świecie. 



Znaki uwzględnione w Unikodzie podzielone zostały 

56



Znaki uwzględnione w Unikodzie podzielone zostały 
na:



podstawowy zestaw znaków (określany jako Basic 
Multilingual Plane - BMP lub Plane 0) – dla tych 
znaków stosowane są kody 16 bitowe;



dodatkowy zestaw znaków – stosowane są kody 32 
bitowe.

background image

Reprezentacja unikodów



UTF - Unicode Transformation Format – metody 

przechowywania unikodów w pamięci komputera:



UTF-8 – kody znaków wchodzących w skład 

podstawowego zestawu ASCII zapisywane są jako 

wartości jednobajtowe; pozostałe kody zapisywane są 

na dwóch, trzech, czterech, pięciu lub sześciu  bajtach 

57

na dwóch, trzech, czterech, pięciu lub sześciu  bajtach 

(znaki o kodach zapisywanych na trzech i większej 

liczbie bajtów spotykane są we współczesnych 

językach bardzo rzadko);



UTF-16 – kody znaków zapisywane są na dwóch, 

trzech lub czterech bajtach (najczęściej 

wykorzystywane są znaki o kodach dwubajtowych);



UTF-32 – kody znaków zapisywane są na 4 bajtach.

background image

Unicode jest międzynarodowym standardem zbioru 
znaków, który może być wykorzystany do pisania 
dokumentów w niemalże każdym istniejącym języku.

Wersja 4.0.1 z czerwca 2004 roku zawiera 

96 447

znaków z prawie wszystkich języków na świecie. 

Unicode z łatwością mieści cały alfabet łaciński, ale 
również pismo pochodzenia greckiego, włączając 

58

również pismo pochodzenia greckiego, włączając 
starożytne i współczesne odmiany oraz cyrylicę używaną 
np. w Serbii. 

Prawdopodobnie jedna osoba na milion obywateli świata 
obecnie mówi językiem, który nie może być sensownie 
przedstawiony w Unicode. 

background image

W wielu zastosowaniach napisy koduje się 
z pomocą kodów kreskowych

59

background image

Kody kreskowe są łatwe do wytworzenia 
(zrobi je każda drukarka) i łatwe do 

(zrobi je każda drukarka) i łatwe do 
automatycznego odczytywania

60

background image

Stosowany w Polsce i Europie trzynastocyfrowy kod 
paskowy EAN-13, widziany na większości produktów 
kupowanych w sklepach, pozwala kodować jedynie cyfry.

61

background image

Bitmapowa reprezentacja grafiki



Reprezentacja bitmapowa (rastrowa) -
zapamiętywane są parametry każdego 
punktu składającego się na obraz. 

62

background image

Charakterystyka reprezentacji 
bitmapowej



bardzo duże zapotrzebowanie na pamięć,



trudne przekształcenie obrazu (skalowanie, 
obrót),



przydatna przy reprezentacji zdjęć (ale nie 

63



przydatna przy reprezentacji zdjęć (ale nie 
medycznych!).

background image

Obrazy bitmapowe (rastrowe) bywają 
często kompresowane (żeby zajmowały 
mniej miejsca)

Formaty graficzne:

• GIF

• TIF

64

• TIF

• JPG

background image

Wektorowa reprezentacja grafiki



Reprezentacja wektorowa - przechowywany 
jest matematyczny opis elementów 
składających się na rysunek 

65

background image

Charakterystyka reprezentacji 
wektorowej



mniejsze zapotrzebowanie na pamięć 
w porównaniu z grafiką rastrową,



łatwiejsze przekształcenie obrazu 
(skalowanie, obrót).

66

(skalowanie, obrót).

background image

Zmiana sposobu reprezentacji grafiki



rasteryzacja - budowanie mapy bitowej, 
zwykle na podstawie opisu wektorowego.



wektoryzacja - przejście do reprezentacji 
wektorowej.

67

wektorowej.

background image

Kompresja jako zmiana sposobu 
reprezentacji informacji



Kompresja - przekształcenie sposobu 
reprezentacji informacji mające na celu 
zmniejszenie zapotrzebowania na pamięć 
(wewnętrzną, zewnętrzną) przeznaczoną do 
jej przechowywania.

68

jej przechowywania.



Dekompresja - odtworzenie pierwotnego 
sposobu reprezentacji informacji.

background image

Rodzaje kompresji



Operacje kompresji i dekompresji najczęściej 
dotyczą plików.



Rodzaje kompresji:



bezstratna – plik po dekompresji jest 

69



bezstratna – plik po dekompresji jest 
dokładnie taki sam jak plik poddany kompresji 
(kompresja tekstów, programów), 



stratna – plik po dekompresji jest zbliżony do 
pliku poddanego kompresji (kompresja 
dźwięku, grafiki, filmów).

background image

Kodowanie Huffmana jako przykład 
algorytmu kompresji bezstratnej



metoda kompresji bezstratnej (przydatna do 

kompresji tekstów, programów),



metoda ta wykorzystuje różnice 

w częstościach występowania 

poszczególnych znaków w tekście (krótsze 

70

poszczególnych znaków w tekście (krótsze 

kody przypisywane są znakom częściej się 

pojawiającym, zaś dłuższe znakom rzadko 

występującym),



metoda ta wykorzystywana jest 

w popularnych programach pakujących 

(np. pkzip, arj, rar).

background image

Przykładowe zastosowanie algorytmu 
Huffmana (1)



Załóżmy, że:



w tekście występują tylko cztery znaki: A, B, C, D,



długość tekstu wynosi 1000 znaków



Przed kompresją:



do zakodowania jednego znaku potrzebne są 2 bity:

71



do zakodowania jednego znaku potrzebne są 2 bity:

A – 00
B – 01
C – 10
D – 11



do zakodowania tekstu o długości 1000 znaków 
potrzebny jest obszar pamięci o wielkości 2000 bitów.

background image

Przykładowe zastosowanie algorytmu 
Huffmana (2)

Proces kompresji:



wyznacza się częstości wystąpienia każdego 
ze znaków

72

ze znaków

A  (45%) 
B (15%)
C (35%)
D (5%)

background image

Przykładowe zastosowanie algorytmu 
Huffmana (3)

Proces kompresji:

porządkuje się elementy względem częstości 
występowania (od najrzadziej do najczęściej 

73

występowania (od najrzadziej do najczęściej 
występującego)

D (5%)
B (15%)
C (35%)
A (45%)

background image

Przykładowe zastosowanie algorytmu 
Huffmana (4)

Proces kompresji:

w kolejnych krokach pobiera się dwa 

najrzadziej

występujące elementy, łączy w jeden

74

występujące elementy, łączy w jeden

i umieszcza na odpowiedniej pozycji listy



krok 1 – połączenie elementów D i B

(D, B) (20%)
C

(35%)

A

(45%)

background image

Przykładowe zastosowanie algorytmu 
Huffmana (5)

Proces kompresji:



krok 2 – połączenie (D, B) i C

A

(45%)

75

A

(45%)

((D, B), C)

(55%)



krok 3 – połączenie A i ((D, B), C) 

(A, ((D, B), C)) (100%)

background image

Przykładowe zastosowanie algorytmu 
Huffmana (6)

Proces kompresji:

Uzyskany element (A, ((D, B), C)) przedstawia 
się w postaci drzewa 

76

się w postaci drzewa 

C

A

D

B

Kody znaków

A – 0
B – 101
C – 11
D – 100

background image

Przykładowe zastosowanie algorytmu 
Huffmana (7)



Długość tekstu w postaci skompresowanej

A: 1 * 0.45 * 1000 =  450 bitów
B: 3 * 0.15 * 1000 =  450 bitów
C: 2 * 0.35 * 1000 =  700 bitów

77

C: 2 * 0.35 * 1000 =  700 bitów
D: 3 * 0.05 * 1000 =  150 bitów
SUMA:

1750 bitów

background image

Realizacja kompresji bezstratnej

78