02 Reprezentacja danychid 3439 ppt

background image

Reprezentacja danych w

komputerze

Zajęcia 2

background image

Informacja

W informatyce pojęcie

informacji

(danych) jest niedefiniowalne, tak jak w

matematyce pojęcie

zbioru

. Można natomiast powiedzieć o jednostkach

informacji.
I tak podstawową jednostką informacji w informatyce jest

bit (b).

Bit

to jednostka informacji mogąca przyjąć (zakodować) jeden z dwóch stanów,

np. prawdę lub fałsz, czarny lub biały, ale w informatyce najczęściej
utożsamiamy tą informację z cyframi 0 lub 1. Jednostka ta w informatyce jest
bardzo przydatna gdyż da się ją ściśle powiązać z napięciem wytworzonym
między dwoma ośrodkami (0 – napięcia brak, 1 – napięcie jest).
Ponieważ za pomocą jednostki

1 bit

można zapisać tylko dwie różne informacje

(czyli bardzo mało informacji), to można by wziąć np.

2 bity

.

No właśnie, ile różnych informacji można zapisać używając

dwóch bitów

?

0,0 – pierwsza informacja (np. drzewo)
0,1 – druga informacja (np. samochód)
1,0 – trzecia informacja (np. ptak)
1,1 – czwarta informacja (np. kartka)
A zatem cztery różne informacje. Widać jednak, że i to za mało. Powstały więc
jednostki wyższych rzędów.

1 Bajt (1 B) = 8 bitów = 2^8 = 256 różnych informacji.

background image

Informacja, cd.

Widać już, że

1 Bajt

pozwala zakodować, np. wszystkie cyfry

0,…,9

, wszystkie

małe litery alfabetu

a,…,z

, duże litery alfabetu

A,…,Z

,

znaki

-

,

=

,

.

,

/

,

\

,

?

,… chyba

właściwie wszystkie znaki dostępne na klawiaturze.
Można by w skrócie tak to przedstawić, a wszystkie wymienione powyżej znaki
zaliczyć do słynnych znaków

ASCII

(poniżej kod dziesiętny, dwójkowy znaków

ASCII o kodzie od 0-127)

background image

Konwerter

Poniżej prosty program w C++ pozwalający uzyskać znaki ASCII i ich
odpowiednik dwójkowy i dziesiętny z poprzedniego slajdu

#include <iostream>
using namespace std;

int main()
{
cout << "decimal: binary: ASCII: " << endl;
for (int n=0; n<=127; n++)
{
cout << " " << n << " ";
for (int i=7; i>=0; i--)
{
int bit = ((n >> i) & 1);
cout << bit;
}
cout << " " << char(n) <<endl;
if ((n == 40) || (n == 80))
cout << "decimal: binary: ASCII: " <<
endl;
}
system("PAUSE");
return 0;
}

background image

Informacja, cd.

Zauważmy, że teraz bez problemu zakodujemy wyraz:

Ala

, to po prostu ciąg znaków:

01000001|01101100|01100001

. Ze zdaniem „Ala ma kota” i z kodowaniem dłuższych zdań,

czy wręcz całych książek, możemy mieć już problemy, choć komputer oczywiście nie. I chodzi
tu oczywiście o pracochłonność zadania.
Zauważmy jednak, że zakodowanie wyrazu

Ala

nie dwójkowo (używając zer i jedynek), a

dziesiętnie (używając cyfr 0,…,9), to już prostsze zadanie dla nas.

Ala

to samo co:

65|108|97

.

Widzimy zatem, że

65|108|97= 01000001|01101100|01100001,

Przy czy obie te liczby zapisane są w różnych systemach, tj. pierwsza w dziesiętnym
(dziesiątkowym), gdzie używamy cyfr 0,1,…,9 a druga w dwójkowym, gdzie używamy cyfr 0,1.
Widzimy więc, że pożądaną umiejętnością jest przeliczanie liczb z jednego systemu na drugi.
Ogólnie jeśli mamy do czynienia z systemem pozycyjnym o podstawie

p

, to

n-cyfrowa

liczba

a

n-

1

a

n-2

…a

1

a

0

ma rozwinięcie:

a

n-1

a

n-2

…a

1

a

0

= a

n-1

*p

n-1

+a

n-2

*p

n-2

+

…+

a

1

*p

1

+

a

0

*p

0

, gdzie

a

n-1

,

a

n-2

,

,

a

1

,

a

0

są cyframi danej

liczby.
Np. Jeśli p=2, to mamy do czynienia z systemem dwójkowym w którym używamy cyfr 0 i 1 i
dla przykładu 1010=1*2

3

+0*2

2

+1*2

1

+0*2

0

.

Jeśli p=10, to mamy do czynienia z systemem dziesiętnym w którym używamy cyfr 0,1,…,9 i
dla przykładu 123=1*10

2

+2*10

1

+3*10

0

.

Dla odróżnienia liczb zapisywanych w danym systemie będziemy często podstawę tego
systemu pisali w dolnym prawym rogu liczby, tj.

1010

2

(liczba jeden zero jeden zero w

systemie dwójkowym),

1010

10

(liczba tysiąc dziesięć w systemie dziesiętnym).

Uwaga!

Potęgę będziemy od tej pory oznaczali symbolem ^ tak jak się to przyjęło robić w

programach matematycznych: Derive, Mathematica, itp.

background image

Zamiana systemów dwójkowy <--> dziesiętny

Weźmy liczbę

110010

2

w systemie dwójkowym.

Mamy:

110010

2

=1*2^5+1*2^4+0*2^3+0*2^2+1*2^1+1*2^0=50

10

Weźmy z kolei liczbę

50

10

w systemie dziesiętnym.

Mamy:

50 : 2 = 25 i reszta

0

25 : 2 = 12 i reszta

1

12 : 2 = 6 i reszta

0

6 : 2 = 3 i reszta

0

3 : 2 = 1 i reszta

1

1 : 2 = 0 i reszta

1

i koniec.
Teraz czytając od końca (tj. z dołu do góry) otrzymujemy:

110010

2

Zadanie 1

(a) Zamień liczby 11100111

2

i 0101010

2

na odpowiadające im liczby w systemie dziesiętnym.

(b) Zamień liczby 234

10

i 356

10

na odpowiadające im liczby w systemie dwójkowym.

background image

Zamiana systemów szesnastkowy <-->

dziesiętny

System szesnastkowy, to również bardzo popularny system kodowania znaków w informatyce
(np. przy kodowaniu kolorów w systemie RGB). W tym systemie mamy do dyspozycji znaki:

0,1,

…,9

oraz dodatkowo znaki

A,B,C,D,E,F

odpowiadające w systemie dziesiętnym liczbom

10,11,12,13,14,15

.

Weźmy liczbę 12AB

16

Mamy:

12AB

16

=1*16^3+2*16^2+10*16^1+11*16^0=4779

10

Weźmy z kolei liczbę

4779

16

w systemie szesnastkowym.

Mamy:

4779 : 16 = 298 i reszta

11

298 : 16 = 18 i reszta

10

18 : 16 = 1 i reszta

2

1 : 16 = 0 i reszta

1

i koniec.
Teraz czytając od końca (tj. z dołu do góry) otrzymujemy:

12AB

16

Zadanie 2

(a) Zamień liczby AB1

16

i 123AA

16

na odpowiadające im liczby w systemie dziesiętnym.

(b) Zamień liczby 234

10

i 356

10

na odpowiadające im liczby w systemie szesnastkowym.

background image

Dodawanie i Mnożenie

System dwójkowy i szesnastkowy

Zadanie 3

(a) Dodaj i pomnóż pisemnie liczby: 110011

2

i 110101

2

(b) Dodaj i pomnóż pisemnie liczby: 12A

16

i A12

16

background image

Kodowanie pozostałych znaków ASCII

Patrząc na tablicę kodów ASCII zaprezentowaną na trzecim slajdzie widzimy, że nie ma tam
kodów binarnych wielu znaków, np.

ą

,

ć

,

Ą

,

Ę

,

ä

,

ö

, symbolu

@

, i np. wszystkich znaków

alfabetu chińskiego.
Problem w tym, że tablica ASCII dla każdego z krajów jest wyposażona w dodatkowe znaki
charakterystyczne dla danego państwa i obejmujące kody ASCII o kodzie dziesiętny
powyżej numeru 127. I tak dla przykładu dla Polski jest to Latin1 i ma postać:

Tak naprawdę w celu ujednolicenia tablicy wszystkich znaków stosowanych przez ludzi we
wszystkich krajach wymyślono Unicode. Potrzeba na to kodowanie jednak 2 Bajtów.

background image

Kodowanie biało-czarnego obrazu

Obraz normalny:

Sposób zakodowania:

Obraz powiększony do kodowania:

Zakodowanie obrazu:

źródło

:

http://edu.i-lo.tarnow.pl/inf/alg/002_struct/0004.php

background image

Kodowanie kolorowego obrazu

Obraz normalny:

Sposób kodowania:

Obraz powiększony do kodowania:

Zakodowanie obrazu:

źródło

:

http://edu.i-lo.tarnow.pl/inf/alg/002_struct/0004.php

background image

Kodowanie tekstu

Zadanie 4

Załóżmy, że symbole alfabetu polskiego kodowane są według reguły:

Zakoduj zdanie: „ALA MA KOTA”.

źródło

:

http://edu.i-lo.tarnow.pl/inf/alg/002_struct/0004.php

background image

Jednostki informacji

Zauważmy, że tak naprawdę jednostka 1B jest bardzo mała i można nią zakodować 256
różnych informacji. A co jeśli chcemy zakodować całą książkę informacji. Trzeba zwiększyć
jednostki.
I tak, mamy następującą tabelę jednostek i ich przeliczania:

źródło

:

http://edu.i-lo.tarnow.pl/inf/prg/005_pmc1/0002.php

Zadanie 5

(i)128 TB =

?

MB =

?

B

(ii)2 Mb =

?

B

(iii)10 MB =

?

GB

background image

Praca domowa:

1.Dowiedź się w jaki sposób przelicza się liczby
pomiędzy systemami

dwójkowym

i

szesnastkowym

.

2.Dowiedź się jak można

zakodować dźwięk

.

3.Dowiedź się czym dokładnie jest

Unicode

i

UTF

i czym

się od siebie różnią?


Document Outline


Wyszukiwarka

Podobne podstrony:
1 Tworzenie bazy danychid 10005 ppt
02 MAKROEKONOMIA(2)id 3669 ppt
02 Notajca UMLid 3691 ppt
02 Zanieczyszczenie środowiskaid 3460 ppt
01 reprezentacja danychid 2917
02 Bazy danych - bibliografia skrocona, INIB rok II, PIOSI janiak
02 PREZENTACJA DANYCH STATYSTYCZNYCH
MADE(02) Transformacja danych
2010 6 mapa numeryczna wymiana danychid 27187 ppt
02 Powstanie filozofiiid 3435 ppt
07 operacje na danychid 7063 ppt
02 geneza RBDid 3906 ppt
02 Stratygrafia sekwencyjnaid 3488 ppt
02 Grawimetria 2id 3908 ppt

więcej podobnych podstron