Informatyka dla klasy IK

Jednostki informacji

Duch informacji

Czy informacja może być czymś materialnym? Jeśli tak, to jaki ma kolor, ile waży, jaka jest w dotyku. Tego typu pytania nie mają większego sensu (a może czasem mają?).

Jedna z koncepcji informacji mówi, że jest ona wytworem umysłu. Aby dostrzec informację, musi istnieć pewien umysł, który ją dostrzeże. Czyli przypomina ona bardziej ducha, rzecz niematerialną, pojęcie abstrakcyjne niż coś ze świata materialnego. Jeśli jednak chcemy informację przetwarzać przy pomocy komputerów, to musimy jej nadać rzeczywistą, materialną postać.

Na co dzień posługujemy się informacją. Jak to robimy? Wykorzystujemy różne środki pośrednie: mowę, pismo, znaki, gesty, wyraz twarzy. A czym są te środki? To są symbole, którym przypisujemy odpowiednie znaczenie. Weźmy przykładowo mowę. Mowa to zbiór określonych dźwięków, które wydajemy za pomocą ust. Z dźwięków tych budujemy słowa, zdania, opowiadania, wiersze. Słowom nadajemy odpowiednie znaczenia. Słowa są używane w określony przez gramatykę sposób. Dzięki temu możemy przekazać informację. Zwróć uwagę, że bez odpowiedniej umowy słowa same w sobie nie stanowią bezpośredniej informacji. Należy wiedzieć, jak zawartą w słowach informację odczytać, czyli należy znać język, do którego te słowa należą. Podobnie jest z pismem. Pismo to zbiór znaków, liter, za pomocą których zapisujemy dźwięki mowy (są alfabety, gdzie zapisywane jest od razu całe słowo – np. w językach azjatyckich). Aby odczytać pismo znów musimy znać sposób interpretacji znaków.

Zauważmy pewną prawidłowość: do wymiany informacji stosuje się różne symbole, lecz informacja nie jest w nich dana z góry, należy ją interpretować. Ta sama informacja może być reprezentowana przez różne symbole, np. słowa oznaczające przyjaciel w kilku językach:

 

friend (angielski)
Freund (niemiecki)
amigo (hiszpański)
barat (węgierski)

 

Również ten sam symbol może reprezentować różną informację:

 

blok (blok mieszkalny)
blok (blok chałwy, blok skalny)
blok (krążek z liną)
blok (zablokowanie ciosu)

 

Jaka jest procedura tworzenia systemu kodowania informacji? Wygląda ona tak:

  1. Tworzymy zbiór informacji, które zamierzamy kodować.
  2. Każdej informacji przypisujemy odpowiedni symbol – czyli określamy znaczenia słów.
  3. Określamy zasady stosowania tych symboli – czyli definiujemy gramatykę.
  4. System ten upowszechniamy u tych, którzy będą z niego korzystać.

Co z tego wynika? Symbole są uniwersalnym środkiem reprezentowania informacji, pod warunkiem, że nadamy im odpowiednie znaczenia. Symbole mogą przyjmować najprzeróżniejsze formy, tutaj inwencja ludzka nie z na granic. Mogą to być dźwięki mowy, znaki pisma, gesty (istnieje język migowy dla głuchoniemych), sygnały elektryczne, radiowe, laserowe, pola magnetyczne, wgłębienia na dyskach optycznych, tajne znaki dla wtajemniczonych (np. stosowane w czasie wojny), itp.

Jeśli chcemy przetwarzać informację za pomocą maszyn, to musimy dla niej wybrać wygodne symbole. Nie mogą być skomplikowane (jak mowa czy pismo), ponieważ skomplikowany symbol wymaga równie skomplikowanej maszyny do jego przetwarzania, a skomplikowane maszyny są drogie i bardziej zawodne Początkowo maszyny wykorzystywano tylko do obliczeń, dlatego przetwarzanymi symbolami były cyfry liczb. Komputer ENIAC pracował na liczbach w systemie dziesiętnym. Oczywiście cyfry musiały być przetworzone na sygnały elektryczne o różnym napięciu. Ten sposób przetwarzania danych się nie przyjął, ponieważ układy dziesiętne są zbyt skomplikowane i zawodne (w sygnale, który posiada 10 różnych poziomów napięcia, zakłócenie łatwiej może zmienić wartość cyfry). Przyjętym powszechnie do przetwarzania informacji stał się najprostszy sygnał dwustanowy, czyli bit. Prosty sygnał może być przetwarzany przez proste układy, a to przekłada się bezpośrednio na mniejsze koszty konstrukcji i użytkowania takich układów.

W informatyce stany bitów oznaczamy zwyczajowo cyframi 0 i 1. W elektronice często stosuje się oznaczenia H (stan wysoki – ang. high) i L (stan niski – ang. low). Dlaczego tak? Otóż w układach elektronicznych bity są przedstawiane za pomocą napięć lub prądów elektrycznych. Niska wartość napięcia (L) oznacza bit 0, wysoka wartość napięcia (H) oznacza bit 1. Wykorzystuje się tutaj fakt, że informacja może być reprezentowana przez różne symbole.

Zastosowania bitów

Bit jest najprostszym symbolem, który może występować tylko w dwóch różnych postaciach. Pokażemy teraz, jak ten prosty symbol można wykorzystać w praktyce do kodowania różnych informacji.

Jeden bit daje nam dwa symbole: 0 i 1. Są to jakby słowa pewnego języka. Mając słowa, można nadawać im różne znaczenia w zależności od potrzeb.

 

Czujka ruchu

 

Idąc korytarzem naszej szkoły, na pewno zauważyłeś pod sufitem tzw. czujniki ruchu (ang. motion sensors). Zadaniem tych urządzeń jest ochrona obiektu przed nocnym włamaniem. Czujnik ruchu oświetla korytarz wiązkami światła podczerwonego, którego nasze oczy nie widzą (sowy podobno to potrafią). Wiązki te padają na ściany oraz inne elementy korytarza i, odbijając się od nich, wracają z powrotem do czujki. Jeśli odbierane przez czujkę światło ulegnie jakiemuś zaburzeniu (np. gdy ktoś przetnie drogę jednemu z promieni), to czujka wysyła odpowiedni sygnał do układu alarmowego, który albo wszczyna alarm akustyczny, albo dzwoni do ochrony. Język czujki jest językiem bitowym:

 

0 – stan nieaktywny lub brak ruchu
1 – wykryto ruch

 

Język ten tworzą sygnały bitowe, które czujka przekazuje do swojego układu zabezpieczającego budynek. Bity są przekazywane w postaci prądu przewodami elektrycznymi. To jedno z tysięcy zastosowań pojedynczego bitu.

Jeden bit nie daje nam zbyt dużych możliwości kodowania informacji. Aby zakodować więcej różnych danych, łączymy bity w grupy (tak samo litery łączymy w grupy, otrzymując wyrazy). Dwa bity dają nam już 4 różne słowa:

 

00 – słowo pierwsze
01 – słowo drugie
10 – słowo trzecie
11 – słowo czwarte

 

Za pomocą dwóch bitów można zatem przesyłać cztery różne informacje. Zwróć uwagę na to, jak utworzyliśmy te cztery słówka binarne. Otóż do stanów 0 i 1 ostatniego bitu dodaliśmy nowy bit o stanie 0, a następnie znów do stanów 0 i 1 ostatniego bitu dodaliśmy nowy bit o stanie 1:

 

0 + 0 = 00
0 + 1 = 01

1 + 0 = 10
1 + 1 = 11

 

Jeśli powtórzymy ten schemat, dodając do dwóch bitów trzeci, to otrzymamy osiem słówek bitowych:

 

0 + 00 = 000 – słowo pierwsze
0 + 01 = 001 – słowo drugie
0 + 10 = 010 – słowo trzecie
0 + 11 = 011 – słowo czwarte

1 + 00 = 100 – słowo piąte
1 + 01 = 101 – słowo szóste
1 + 10 = 110 – słowo siódme
1 + 11 = 111 – słowo ósme

 

Dodając każdy kolejny bit, zwiększamy dwukrotnie liczbę słówek: wszystkie poprzednie słówka z nowym bitem o stanie 0 i wszystkie poprzednie słówka z nowym bitem o stanie 1. Otrzymujemy następujący ciąg geometryczny:

 

1 bit  →  2 słówka      21
2 bity  →  4 słówka   22
3 bity  →  8 słówek   23
4 bity  →  16 słówek   24
5 bitów  →  32 słówka   25
6 bitów  →  64 słówka   26
7 bitów  →  128 słówek   27
8 bitów  →  256 słówek   28
...     ...      
16 bitów  →  65536 słówek   216
...     ...      
32 bity  →  4 mld słówek   232
...     ...      
n bitów  →  2n słówek    

 

Co z tego wynika? Dla każdej skończonej liczby informacji zawsze możemy utworzyć wystarczającą dla nich liczbę słówek bitowych. Czyli, pomimo swej prostoty, bity pozwalają kodować dowolną, skończoną liczbę informacji. I tutaj właśnie tkwi ich potęga.

Kodowanie grafiki i filmów

Obraz cyfrowy jest zbudowany z siatki punktów, które nazywamy pikselami (ang. pixel = picture element). Są to niepodzielne fragmenty obrazu o jednolitym kolorze. Wyobraźmy sobie, że mamy następujący obrazek:

 

Aby zobaczyć strukturę tworzących go pikseli, powiększmy go:

 

 

Tabela kodów kolorów:

      0
    1

 

Piksele przyjmują tutaj tylko dwa kolory: czarny i biały. Dwa kolory możemy zakodować przy pomocy jednego bitu (patrz: tabelka w poprzednim podrozdziale). Umawiamy się, że bit 0 będzie oznaczał kolor tła, czyli kolor biały, a bit 1 będzie oznaczał kolor tuszu, czyli czarny – w ten sposób określamy znaczenie słów 0 i 1 w języku grafiki tego obrazka. Jeśli każdy piksel obrazka zastąpimy kodującym go bitem, to otrzymamy następujący wynik:

 

00000000000000000000010000000100
00000000000000000000000000001000
00000000000000000000001000010000
00000000000000000100000000100000
00000000000011111000000000010101
00000000000100000110001110000000
00000000001000000001110000000000
00000000001000000000000000010000
00000000001000000000010010001000
00000001111111000000100000000100
00000001111111000001000010000000
00000001111111000000000000000000
00000111111111110000000010000000
00011111111111111100000000000000
00011111111111111100000000000000
00111111111111111110000000000000
00111111111111111110000000000000
01111011111111111111000000000000
01110111111111111111000000000000
01110111111111111111000000000000
01100111111111111111000000000000
01100111111111111111000000000000
01110111111111111111000000000000
01111011111111111111000000000000
00111011111111111110000000000000
00111100111111111110000000000000
00011111111111111100000000000000
00011111111111111100000000000000
00000111111111110000000000000000
00000001111111000000000000000000

 

Obrazek stał się mało czytelny dla człowieka, lecz bity są znakomicie czytelne dla komputerów. Te 0 i 1 zostaną przekształcone na odpowiednie sygnały elektryczne i układy komputera będą mogły je przechować, przetworzyć lub przesłać przez sieć informatyczną nawet na drugi koniec świata. Jeśli odbiorca będzie znał znaczenie poszczególnych bitów (będzie rozumiał język grafiki tego obrazka), to bez problemów odtworzy sobie treść.

Oczywiście piksele mogą przybierać więcej niż 2 kolory. W takim przypadku rośnie liczba informacji i należy zwiększyć ilość bitów kodujących kolor piksela. Oto ten sam obrazek z 4 kolorami pikseli:

 

 

 

Tabela kodów kolorów:

      00
    01
    10
    11

Po zakodowaniu otrzymujemy (każde dwa bity to jeden piksel):

 

0000000000000000000000000000000000000000001000000000000000100000
0000000000000000000000000000000000000000000000000000000010000000
0000000000000000000000000000000000000000000010000000001000000000
0000000000000000000000000000000000100000000000000000100000000000
0000000000000000000000001111111111000000000000000000001000100010
0000000000000000000000110000000000111100000011101000000000000000
0000000000000000000011000000000000000011111100000000000000000000
0000000000000000000011000000000000000000000000000000001000000000
0000000000000000000011000000000000000000001000001000000010000000
0000000000000001010101010101000000000000100000000000000000100000
0000000000000001010101010101000000000010000000001000000000000000
0000000000000001010101010101000000000000000000000000000000000000
0000000000010101010101010101010100000000000000001000000000000000
0000000101010101010101010101010101010000000000000000000000000000
0000000101010101010101010101010101010000000000000000000000000000
0000010101010101010101010101010101010100000000000000000000000000
0000010101010101010101010101010101010100000000000000000000000000
0001010101110101010101010101010101010101000000000000000000000000
0001010111010101010101010101010101010101000000000000000000000000
0001010111010101010101010101010101010101000000000000000000000000
0001011111010101010101010101010101010101000000000000000000000000
0001011111010101010101010101010101010101000000000000000000000000
0001010111010101010101010101010101010101000000000000000000000000
0001010101110101010101010101010101010101000000000000000000000000
0000010101110101010101010101010101010100000000000000000000000000
0000010101011111010101010101010101010100000000000000000000000000
0000000101010101010101010101010101010000000000000000000000000000
0000000101010101010101010101010101010000000000000000000000000000
0000000000010101010101010101010100000000000000000000000000000000
0000000000000001010101010101000000000000000000000000000000000000

 

Zwiększając liczbę bitów na piksel, otrzymujemy możliwość kodowania coraz większej liczby kolorów. Jeśli przeznaczymy na piksele po 8 bitów, to nasze obrazki będą mogły posiadać do 28 = 256 różnych kolorów – popularny w sieci format GIF (ang. Graphics Interchange Format) stosuje właśnie takie rozwiązanie. Grafika GIF najlepiej nadaje się do rysunków, zdjęcia nie wychodzą w niej najlepiej.


http://www.sylwesteroferty.pl/grafika/kot_sylwester_2.gif

Obrazek GIF

 

Format JPG/JPEG (ang. Joint Photographic Experts Group) pozwala kodować piksele 24 bitami. Daje to gamę 224 = 16 milionów kolorów, więcej niż potrafi rozróżnić ludzkie oko. Tryb ten nosi nazwę True Color (prawdziwy kolor) i doskonale nadaje się do cyfrowej fotografii.

 

Obrazek JPG

 

Film to nic innego jak seria szybko po sobie wyświetlanych obrazków, co daje wrażenie ruchu. Każdy z tych obrazków jest kodowany w opisany powyżej sposób.

 

Animowany GIF

 

Wniosek: bity doskonale nadają się do reprezentowania grafiki oraz filmów.

Kodowanie tekstu

Tekst jest wciąż bardzo ważny dla ludzi i stosujemy go powszechnie. Tekst zbudowany jest ze znaków. Każdy znak potraktujemy jak osobną informację. Najpierw określamy zbiór znaków, które będziemy chcieli kodować za pomocą bitów. Na przykład tak:

 

A Ą B C Ć D E Ę F G H I J K L Ł M N Ń O Ó P Q R S Ś T U V W X Y Z Ż Ź 0 1 2 3 4 5 6 7 8 9 . , : ; + - * / ( ) spacja

 

Teraz liczymy, ile mamy znaków do zakodowania. Wychodzi 56 znaki. Ile potrzebujemy bitów na każdy znak? Oczywiście 6, ponieważ 26 = 64. Zatem słówka 6-bitowe pokrywają zapotrzebowanie, a nawet mamy mały zapas na przyszłe rozszerzenia.

W następnym kroku musimy każdej z liter przypisać unikalne słówko bitowe. Będziemy je nazywali kodem binarnym znaku (ang. binary character code). Możemy to zrobić tak:

 

A 000000
F 001000
M 010000
S 011000
Z 100000
5 101000
; 110000
Ą 000001
G 001001
N 010001
Ś 011001
Ż 100001
6 101001
+ 110001
B 000010
H 001010
Ń 010010
T 011010
Ź 100010
7 101010
- 110010
C 000011
I 001011
O 010011
U 011011
0 100011
8 101011
* 110011
Ć 000100
J 001100
Ó 010100
V 011100
1 100100
9 101100
/ 110100
D 000101
K 001101
P 010101
W 011101
2 100101
. 101101
( 110101
E 000110
L 001110
Q 010110
X 011110
3 100110
, 101110
) 110110
Ę 000111
Ł 001111
R 010111
Y 011111
4 100111
: 101111
  110111

 

Gdy kody binarne wszystkich znaków będą gotowe, możemy przystąpić do kodowania tekstu. Każdą literkę tekstu zastępujemy odpowiadającym jej kodem binarnym. Na przykład:

 

JAPONIA JEST PIĘKNYM KRAJEM.

J 001100 A 000000 P 010101 O 010011 N 010001 I 001011 A 000000   110111
J 001100 E 000110 S 011000 T 011010   110111
P 010101 I 001011 Ę 000111 K 001101 N 010001 Y 011111 M 010000   110111
K 001101 R 010111 A 000000 J 001100 E 000110 M 010000 . 101101
 

001100000000010101010011010001001011000000110111001100000110011000011010110111010101001011000111001101010001011111010000110111001101010111000000001100000110010000101101

 

Otrzymany ciąg bitów możemy dowolnie przetwarzać na komputerach.

Działanie odwrotne jest również proste. Załóżmy, że otrzymaliśmy ciąg bitów:

 

000010000111000101000111110111001100011011011010010111010011101101

 

Ponieważ wiemy, że w naszym systemie każdy znak jest reprezentowany przez 6 bitów, to otrzymany ciąg dzielimy na grupy 6 bitowe:

 

000010 000111 000101 000111 110111 001100 011011 011010 010111 010011 101101

 

Dostaliśmy kody bitowe poszczególnych znaków. Zamieniamy je na litery zgodnie z tabelą kodu:

 

000010 000111 000101 000111 110111 001100 011011 011010 010111 010011 101101
B Ę D Ę spacja J U T R O .

 

BĘDĘ JUTRO.

 

Powyższy kod znakowy jest tylko przykładem szkolnym. W praktyce stosuje się nieco bardziej zaawansowane rozwiązania, np. kod ASCII (ang. American Standard Code for Information Interchange), w którym kod każdego znaku jest 8-mio bitowy. Kod ASCII pozwala kodować 256 różnych znaków. Oczywiście jest to zbyt mało dla kodowania wszystkich używanych przez ludzi liter. Z tego powodu utworzono kod Unicode, gdzie znaki mogą mieć do 32 bitów długości. Kod Unicode powszechnie jest stosowany w Internecie oraz w systemie Windows. Dzięki temu obecne przeglądarki sieciowe potrafią poprawnie wyświetlać tekst praktycznie w każdym języku (pod warunkiem, że masz zainstalowaną odpowiednią czcionkę).

 

正體字/繁體字

 

Wniosek: bity nadają się do kodowania znaków.

Kodowanie liczb

Teraz pokażemy sposób przedstawiania liczb naturalnych za pomocą bitów. Wyobraźmy sobie, iż żyjemy w takim dziwnym kraju (no, może tak bardzo tego nie musimy sobie wyobrażać, wystarczy się rozglądnąć), w którym wszystkie monety mają nominały równe potęgom liczby 2:

 

Nominał Potęga 2
1 20
2 21
4 22
8 23
16 24
32 25
64 26
... ...
 
 

Załóżmy, iż w tym dziwnym kraju wyszło zarządzenie, które głosi, iż wszystkie kwoty należy wypłacać najmniejszą możliwą liczbą monet. Za nieprzestrzeganie tego zarządzenia rząd nałożył olbrzymią karę 264. Cóż, nikt tyle pieniążków nie miał, zatem wszyscy rozpoczęli skrupulatne odmierzanie sum pieniężnych.

Z sumami będącymi potęgami liczby 2 nie ma problemu - wystarczy jedna moneta o właściwym nominale. Pozostałe sumy wyliczamy następująco:

Trzeba wypłacić 157. Aby monet było jak najmniej, każda o właściwym nominale powinna wystąpić co najwyżej raz. Ano zobaczmy:

 

Pierwszą monetą może być 128 (256 byłoby za duże, a 64 musielibyśmy użyć dwukrotnie). Zatem płacimy 128. Pozostaje wciąż:

157 - 128 = 29

Najbliższą monetą będzie 16. Płacimy 16. Pozostaje:

29 - 16 = 13

Teraz płacimy 8. Pozostaje:

13 - 8 = 5

Płacimy 4. Pozostaje:

5 - 4 = 1

I na koniec wypłacamy 1. Podsumujmy:

157 = 128 + 16 + 8 + 4 + 1

 

No dobrze, powiesz. Co to ma jednak wspólnego z bitami? A ma. Zwróć uwagę, iż przy wypłacie sumy podejmujemy dla poszczególnych nominałów monet jedną z decyzji:

 

Wypłacić daną monetę  - 1
Nie wypłacać monety  - 0

 

A to są przecież nasze kochane bity. Ułóżmy monety kolejno z prawa na lewo od najmniejszej do największej. Otrzymamy następujący ciąg nominałów:

 

Nominał ... 1024 512 256 128 64 32 16 8 4 2 1
Potęga 2 ... 210 29 28 27 26 25 24 23 22 21 20

 

Teraz pod tak wypisanymi nominałami zapisujemy dla danej sumy pieniężnej wypłaconą liczbę monet danego nominału:

 

Nominał ... 1024 512 256 128 64 32 16 8 4 2 1
Potęga 2 ... 210 29 28 27 26 25 24 23 22 21 20
157 =   0 0 0 1 0 0 1 1 1 0 1

 

Ponieważ dana moneta może wystąpić co najwyżej raz, to pod nominałami zapisujemy tylko cyfry 0 lub 1. Jeśli cyfry potraktujemy teraz jako bity, otrzymamy zapis binarny danej liczby dziesiętnej:

 

157(10) = ...00010011101(2)

 

W zapisie tym bit o stanie 1 ma wartość odpowiadającej mu potęgi liczby 2. Bit o stanie 0 ma wartość 0. Aby obliczyć wartość całej liczby binarnej wystarczy zatem zsumować wartości bitów o stanie 1.

Oto inny przykład:

W dziwnym kraju na czeku bankier wypisał sumę pieniężną zaznaczając liczbę monet o kolejnych nominałach, które należy wypłacić klientowi banku. Zrobił to tak:

 

1011101101

 

Jaką sumę należy wypłacić? My już wiemy. Skoro poszczególne cyfry oznaczają liczbę monet o danym nominale, zapisujemy to tak:

 

Nominał 512 256 128 64 32 16 8 4 2 1
Potęga 2 29 28 27 26 25 24 23 22 21 20
SUMA = 1 0 1 1 1 0 1 1 0 1

 

Teraz sumujemy nominały wypłaconych monet i otrzymujemy:

 

512 + 128 + 64 + 32 + 8 + 4 + 1 = 749

 

Proste? Jeśli nie, to przeczytaj to kolejny raz, aż zrozumiesz.

Formalnie rzecz biorąc, jeśli mamy n bitową liczbę binarną:

 

bn-1 bn-2 ... b2 b1 b0, gdzie bi = 0 lub 1, dla i = 0,1,2,...,n-1

 

to jej wartość dziesiętną obliczamy zgodnie z poniższym wzorem:

 

wartość = bn-12n-1 + bn-22n-2 + ... + b222 + b121 + b020

 

Wniosek: bity nadają się do kodowania liczb.

Podsumowanie

Informacja jest kodowana za pomocą symboli, którym nadajemy odpowiednie znaczenia.

Najprostszym symbolem jest bit.

Bit występuje tylko w dwóch różnych stanach.

W informatyce bity oznaczamy cyframi 0 i 1.

Jeden bit pozwala zakodować dwie informacje. n bitów koduje 2n informacji.

Bity są bardzo dobrym środkiem kodowania wszelkich informacji.

Bity są łatwo przetwarzane przez komputery.



List do administratora Serwisu Edukacyjnego Nauczycieli I LO

Twój email: (jeśli chcesz otrzymać odpowiedź)
Temat:
Uwaga: ← tutaj wpisz wyraz  ilo , inaczej list zostanie zignorowany

Poniżej wpisz swoje uwagi lub pytania dotyczące tego rozdziału (max. 2048 znaków).

Liczba znaków do wykorzystania: 2048

 

W związku z dużą liczbą listów do naszego serwisu edukacyjnego nie będziemy udzielać odpowiedzi na prośby rozwiązywania zadań, pisania programów zaliczeniowych, przesyłania materiałów czy też tłumaczenia zagadnień szeroko opisywanych w podręcznikach.



   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2017 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.