Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych. Autor artykułu: mgr Jerzy Wałaszek, wersja1.0 |
©2011 mgr
Jerzy Wałaszek
|
W informatyce pojęcie informacji jest niedefiniowalnym pojęciem pierwotnym. Nie da się zdefiniować informacji bez odwołania do niej samej - powstałoby więc błędne koło. Można natomiast zdefiniować jej jednostki. To tak jak np. z polem magnetycznym - nikt naprawdę nie wie czym ono jest w swojej istocie, ale potrafimy je obserwować, mierzyć i znamy jego różne własności, co wystarcza do opisu tego pola.
Pierwszą i najbardziej podstawową jednostką informacji jest 1 bit. Czym jest bit? Oto krótka definicja:
bit - cyfra binarnaJednostka informacji; ilość informacji otrzymanej w odpowiedzi na pytanie dające w wyniku potwierdzenie lub zaprzeczenie; wielkość obliczeniowa, która może przyjąć jedną z dwóch wartości, takich jak prawda lub fałsz, albo 0 lub 1; najmniejsza jednostka pamięci wystarczająca do przechowania jednego bitu informacji. Mówi się, że bit jest "ustawiony", gdy jego wartość jest prawdą lub 1, a "wyzerowany", gdy ma wartość fałszu lub 0. Stosuje się określenia ustawiania i zerowania bitów. Określenie "bit" pojawiło się po raz pierwszy w druku w znaczeniu informatycznym w roku 1949, a przypisuje się je jednemu z pierwszych informatyków Johnowi Tukey'owi. Tukey wspomina, iż wymyślił ten wyraz w trakcie śniadania jako bardziej poręczną alternatywę dla określeń "bigit" lub "binit". |
Czy ta definicja jest zrozumiała dla ciebie? Chyba nie. Zwykle nie jest. Postaram się wyjaśnić o co tutaj tak naprawdę chodzi. Jeśli to zrozumiesz, to bity przestaną być dla ciebie tajemnicze. Zaczynamy...
Przyjrzyjmy się, w jaki sposób informacja jest przekazywana pomiędzy nadawcą i odbiorcą. Obrazuje to rysunek. Nadawca N (niekoniecznie człowiek) wysyła we wspólnym ośrodku sygnał do odbiorcy O. Sygnał jest nośnikiem informacji. Dzięki niemu informacja może być przekazana. Sygnał może przyjmować różne formy: fala akustyczna dla mowy; język migowy, gdzie poszczególne gesty nadawcy są dla odbiorcy sygnałem przekazującym informacje; pismo; fale świetlne (np. sygnały alfabetu Morse'a przekazywane w nocy pomiędzy statkami chcącymi utrzymać ciszę radiową); fale radiowe; prąd elektryczny; strumień cząstek, itp. Aby odbiorca (niekoniecznie człowiek) zrozumiał przekazywaną informację, musi on znać sposób umieszczenia jej w sygnale (czyli jej zakodowanie). Weźmy dla przykładu naszą mowę. Znaczenia poszczególnych słów (czyli sygnałów) uczymy się już w dzieciństwie, a później używamy wyuczonej mowy przez całe życie osiągając wysoki stopień automatyzmu. Co jednak się stanie, gdy zostaniemy skonfrontowani z obcokrajowcem, który posługuje się innym sposobem kodowania informacji w dźwiękach mowy. Przestaniemy cokolwiek rozumieć (o ile nie znamy języka ojczystego tego obcokrajowca). Jest to oczywiste, ponieważ nie znamy sposobu kodowania informacji w docierających do nas sygnałach, to nie możemy jej z nich wydobyć. Z drugiej strony mowę można zapisać za pomocą znaków graficznych, czyli pisma. Ta sama informacja będzie teraz przedstawiona przy pomocy innych sygnałów - zmieniliśmy jej sposób kodowania. Odczytanie pisma również wymaga znajomości sposobu kodowania dźwięków za pomocą liter, a istnieją języki, gdzie każde słowo ma swój własny znak, niekoniecznie wiążący się z wymową tego słowa, lecz z jego znaczeniem. Np. język chiński:
Obok widnieje pewien symbol z alfabetu języka chińskiego. Na pierwszy rzut oka jest on dla nas zupełnie niezrozumiały. Spróbujmy go wyjaśnić. Prostokąt oznacza Ziemię, czyli Świat. Kreska pionowa przebiega przez środek prostokąta, oznacza więc Środek. Jeśli złożymy to razem, to otrzymamy Środek Świata. Oczywiście znak ten oznacza Chiny, czyli Państwo Środka Świata. Właśnie wyjaśniliśmy sposób kodowania informacji w symbolu Chi-na. Teraz jest to dla nas zupełnie proste. Poznanie sposobu kodowania informacji w docierającym do nas sygnale pozwala na jej wydobycie.
Jeden z wielkich astronomów zeszłej ery twierdził, iż gwiazdy będą zawsze poza
zasięgiem naszych badań i nigdy się nic o nich nie dowiemy. Wychodził on z
założenia, iż nie można zbadać czegoś, czego nie można dotknąć. Czy rzeczywiście
nie możemy dotknąć gwiazd? A może to one dotykają nas? Robią to co noc, świecąc
nad naszymi głowami. Światło, które widzimy w postaci jasnych punkcików na
nocnym niebie, powstało we wnętrzu gwiazd i niesie w sobie informacje o ich
budowie. Informację tę trzeba tylko wydobyć z docierającego do Ziemi sygnału.
Dokonuje tego nauka zwana analizą spektralną. Badając długość oraz energię
docierających do nas fal świetlnych i cząstek, możemy odkryć, z jakich
pierwiastków zbudowane są gwiazdy - a nawet czy dana gwiazda porusza się w
naszym kierunku, czy też oddala się od nas - i oszacować tę prędkość. Nasz
astronom bardzo by się zdziwił...
Z języka chińskiego i gwiazd wróćmy jednak do naszych bitów. Co mają bity wspólnego z informacją. Mają, jeśli potraktujemy je jako sygnały, które przenoszą zakodowaną informację. Każdy bit może przyjmować jeden z dwóch dostępnych mu stanów. Stany te mogą być reprezentowane na różne sposoby:
Postać bitu jest pojęciem technicznym i zmartwieniem dla inzynierów. Nas bardziej interesuje, jak przy jego pomocy można przekazywać informację. Cała sztuka polega na kodowaniu (identycznie jak w przypadku mowy i pisma, gdzie określonym dźwiękom, czy znakom przypisuje się odpowiednie znaczenie). Jeden bit może przyjmować dwa różne stany (np. 0 i 1), więc mamy do dyspozycji dwa słowa. Słowom tym musimy nadać znaczenie, np. takie:
słowo | bit | znaczenie |
pierwsze | 0 | jest spokojnie |
drugie | 1 | POŻĄR! |
Załóżmy, iż bit taki przekazuje nam czujnik umieszczony w jakimś pomieszczeniu, które ma chronić przed pożarem. Jeśli otrzymany bit ma wartość 0, to możemy być spokojni - nic tam się nie dzieje. Jeśli jednak odebrany bit będzie miał stan 1, to już jest powód do zdenerwowania - w chronionym pomieszczeniu wybuchł pożar. Ale, ale.. Nikt nam przecież o tym nie powiedział. Odczytaliśmy informację przekazaną przez bit. Stąd wniosek, iż bity, podobnie jak mowa i pismo, również nadają się do przekazywania informacji. Potraktujmy je po prostu jako słowa w pewnym języku. Jeśli wyglądają dla nas dziwnie i niezrozumiale, to przypomnijmy sobie pismo chińskie, które jest równie niezrozumiałe, dopóki nie poznamy jego tajników.
Powyższy przykład był bardzo prosty. Zdefiniowaliśmy język prostego czujnika przeciwpożarowego. W języku tym potrzebne były tylko dwa słowa. Dlatego mogliśmy je przekazać za pomocą bitu. Techniczny sposób realizacji takiego bitu, to już inna sprawa. Dla mowy odpowiada to doborowi mówcy o przyjemnym i przekonywującym głosie, którego z przyjemnością wysłuchają słuchacze i oczywiście wszystko zrozumieją i zapamiętają. Czujnik (nadawca) może być połączony z systemem alarmowym (odbiorcą) np. za pomocą przewodu elektrycznego. Brak prądu w tym przewodzie może odpowiadać bitowi o stanie 0, a więc sytuacji nie awaryjnej. Jeśli w przewodzie pojawi się prąd, to będzie to odpowiadało bitowi o wartości 1, oznacza więc pożar. Po odebraniu takiego sygnału alarmowego system powinien włączyć syreny i zawiadomić straż pożarną (a może również włączyć prysznic wodny w chronionym pomieszczeniu, który ugasi pożar).
Zapamiętaj!Przy pomocy jednego bitu można przekazać dwie różne informacje:
|
Niestety, otaczający nas świat nie jest taki prosty. Co zrobić jeśli musimy kodować więcej niż dwie informacje? Odpowiedź jest prosta. Zamiast jednego bitu weźmy ich kilka i tak utworzoną grupę potraktujmy jako sygnał złożony. Np. dla dwóch bitów otrzymamy następujące słowa binarne:
b1 | b0 | Słowo |
0 | 0 | pierwsze |
0 | 1 | drugie |
1 | 0 | trzecie |
1 | 1 | czwarte |
Otrzymaliśmy cztery słówka do wykorzystania: 00, 01, 10 i 11. Każdemu z tych słów można przypisać (zakodować) jedną informację. Np, taką:
b1 | b0 | znaczenie |
0 | 0 | wszystko OK |
0 | 1 | otwarte drzwi |
1 | 0 | otwarte okno |
1 | 1 | otwarte drzwi i okno |
Tym razem mamy czujnik chroniący pomieszczenie przed włamaniem. Jeśli zostaną otwarte drzwi lub okno, to system alarmowy otrzymując słowa 01, 10 i 11 może podjąć odpowiednie działanie. Dwa bity umożliwiają przekazanie 4 słów. Zobaczmy, jak przedstawia się to dla trzech bitów:
b2 | b1 | b0 | Słowo |
0 | 0 | 0 | pierwsze |
0 | 0 | 1 | drugie |
0 | 1 | 0 | trzecie |
0 | 1 | 1 | czwarte |
1 | 0 | 0 | piąte |
1 | 0 | 1 | szóste |
1 | 1 | 0 | siódme |
1 | 1 | 1 | ósme |
Trzy bity udostępniają 8 słów: 000, 001, 010, 011, 100, 101, 110, 111. Każdemu z tych słów możemy przypisać jedną wiadomość (zakodować informację). Grupa trzech bitów pozwala na przesłanie 8 informacji. Zapiszmy to następująco:
1 bit - 2 wiadomości
2 bity - 4 wiadomości
3 bity - 8 wiadomości
Liczba wiadomości tworzy ciąg geometryczny - każdy następny wyraz jest dwukrotnie większy od swojego poprzednika. Musi tak być, ponieważ dodanie każdego następnego bitu podwaja liczbę ich kombinacji - stan nowego bitu "0" ze wszystkimi poprzednimi stanami bitów oraz stan "1" nowego bitu ze wszystkimi poprzednimi kombinacjami - dwa razy więcej. Gdy już to zauważymy, to możemy podać prosty wzór na liczbę dostępnych słów dla n bitów:
liczba słów dla n bitów = 2n |
Postępowanie to prowadzi nas do otrzymania słów binarnych. Jeśli chcemy je teraz wykorzystać, to musimy każdemu z otrzymanych słów przypisać (zakodować) jedną wiadomość. Od tego momentu słowo takie będzie przenosiło tę wiadomość i odbiorca odczyta ją.
Na pytanie typu "jakie to są wiadomości?" odpowiem od razu - takie, jakie potrzebujemy. Mając słowa mamy nośnik informacji, który możemy wykorzystać w dowolny sposób.
Mamy do dyspozycji słowa kodowe o długości 8 bitów. Ile różnych wiadomości można przesłać przy ich pomocy?
Odpowiedź: liczba wiadomości wynosi 28, czyli 256.
Pozostaje do omówienia jeszcze jeden problem. Mamy n wybranych wiadomości, które chcielibyśmy kodować przy pomocy bitów. Ile bitów potrzebujemy (jak długie bitowo muszą być słowa)? Odpowiedź wynika bezpośrednio z podanego przez nas wzoru. Tzn. musimy znaleźć taką najmniejszą liczbę m, aby spełniona była nierówność:
n <= 2m, gdzie n - liczba wiadomości, m - liczba bitów |
Aby otrzymać oszacowanie wielkości m, logarytmujemy obustronnie powyższą nierówność (logarytm przy podstawie 2) i otrzymujemy:
log2(n) <= log2(2m),
co po uproszczeniu da w wyniku:
log2(n) <= m,
a po odwróceniu stron mamy ostatecznie wzór na
m:
m >= log2(n), gdzie m - liczba bitów w słowie binarnym, n - liczba wiadomości do zakodowania |
Chcemy kodować 17 różnych wiadomości. Ile bitów musimy
przeznaczyć na słowa kodowe?
n = 17, m = ?
Stosujemy nasz wzór:
m >= log2(17), ponieważ log2(17) =
4,0874628412503394082540660108104..., to
m >= 4,0874628412503394082540660108104...
Oczywiście m musi być liczbą całkowitą, więc
wystarczy przyjąć
m = 5,
aby powyższa nierówność była spełniona.
Odpowiedź będzie brzmiała: Do zakodowania 17 różnych wiadomości potrzebne nam są słowa kodowe o długości 5 bitów.
Jak łatwo możemy się przekonać, 5 bitów daje 25, czyli 32 słowa, a wiadomości mamy tylko 17. Wynika z tego, że 15 słów kodowych nie będzie wykorzystane. Czy nie jest to marnotrawstwo? Oczywiście, że jest (i znaleziono na to rozwiązanie o nazwie kompresja danych), ale dla nas bardziej istotne jest, aby mieć wystarczająco dużo słów. To, że pewne słowa nie będą wykorzystywane, nic nie szkodzi. Przecież z liter naszego alfabetu też można utworzyć słowa bez znaczenia: gzlowfkp - a czy tym się ktoś przejmuje?
Zapamiętaj!
|
Czy przy pomocy bitów można przekazywać informacje o obrazach? Oczywiście, należy tylko znaleźć sposób kodowania takiej informacji. Weźmy dla przykładu taki obrazek:
Na pierwszy rzut oka sprawa wygląda beznadziejnie. Jak przypisać słowom bitowym coś takiego jak kształt graficzny. No cóż, weźmy lupę i przyjrzyjmy się temu obrazkowi jeszcze raz w dużym powiększeniu:
Przede wszystkim zwróćmy uwagę na fakt, iż obrazek nie jest
ciągły i przy dużym powiększeniu ujawnia swą wewnętrzną strukturę
(w celu zwiększenia czytelności zastosowałem małe niebieskie kropeczki, których
na oryginalnym obrazku nie ma). Zbudowano go z kwadratów
(kafelek) dwojakiego rodzaju: białych i czarnych. Wiadomościami będą więc
kolory kwadratów tworzących obrazek. Kwadrat biały to jedna wiadomość, a kwadrat
czarny to druga. Mamy dwie wiadomości, musimy teraz przypisać im
odpowiednie słowa bitowe. Dla dwóch wiadomości będą one miały długość:
Kwadrat biały to słowo bitowe 0, kwadrat czarny to słowo bitowe 1. Po określeniu sposobu kodowania naszego obrazka możemy teraz przedstawić go w postaci bitów:
0001111111111100 0011111111111110 0110000000001111 0100000000000111 1100000000000111 1101110001110111 1100100000100111 1100000000000111 0100000000000110 0110010010001110 0100001100000100 0100000000000100 0100111111100100 0010000000001000 0001100000110000 0000011111000000 |
Zadanie kodowania grafiki pozornie się komplikuje, gdy obrazek zawiera więcej kolorów. Załóżmy, iż do narysowania naszej mordki wykorzystamy cztery kolory:
Ponieważ teraz każdy piksel obrazka może przyjąć jeden z czterech różnych kolorów, to informacji tej nie zmieścimy w jednym bicie - potrzebujemy pary bitów. Dwa bity mogą przyjąć cztery różne kombinacje swoich stanów: 00, 01, 10 i 11 tworząc cztery różne binarne słówka kodowe. Każdemu słowu kodowemu przypiszemy jeden kolor piksela. Określmy takie przypisanie:
- 00 | |
- 01 | |
- 10 | |
- 11 |
Taki sposób kodowania kolorów nazywa się kodowaniem palety barw. Polega on na tym, iż każdemu kolorowi na obrazku przypisujemy osobne słowo kodowe. Zdefiniowawszy paletę można już bez problemów przekształcić obrazek w odpowiedni ciąg bitów:
00000000010101010101010100000000
00000101010101010101010101010000
00010101010101010101010101010100
00010101010101010101010101010100
01011010101010101010101010010101
01101010101010101010101010100101
01101011111111101011111111101001
01101010111110101010111110101001
11101010101010101010101010101011
11101010101010101010101010101011
11101010101011111111101010101011
11101010111010101010101110101011
00111010101111111111111010101100
00111010101010101010101010101100
00001111111010101010101111110000
00000000001111111111110000000000
Odkodowanie obrazka nie nastarcza większych trudności, jeśli znamy paletę kolorów i sposób jej przyporządkowania słowom kodu. Paleta dwubitowa pozwala na zdefiniowanie czterech kolorów. Paleta 8 bitowa definiuje już 256 kolorów. Paleta 16 bitowa to 65536 barw.
Odbiorca znając znaczenie bitów oraz wiedząc jaki jest rozmiar obrazka, może z łatwością go odtworzyć z otrzymanych bitów. Dokonaliśmy więc zakodowania obrazka w słowa bitowe. Zwróćcie uwagę, iż zwiększenie kolorów na obrazku polega jedynie na zastosowaniu kwadratów (nazywamy je pikselami) o większej liczbie kolorów. W tym wypadku wzrośnie nam liczba wiadomości, a co za tym idzie, będziemy musieli zastosować więcej bitów do zakodowania koloru kwadratu. Np. kodowanie kolorów na dwóch bitach daje nam 22 możliwych kolorów, czyli cztery. Dla 8 bitów mamy do dyspozycji 256 różnych kolorów. Oto przykładowy obrazek zbudowany z pikseli o 256 różnych kolorach oraz jego powiększony fragment, który ukazuje strukturę wewnętrzną:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
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 | Ż | Ż | , | . | : | ? |
Wbrew pozorom kodowanie znaków pisarskich jest podobne do kodowania koloru pikseli. Tutaj nie interesuje nas faktyczny kształt danej litery, tylko jej rodzaj - tzn. czy jest to na przykład literka "A". Zastanówmy się, ile literek chcielibyśmy kodować. Możemy wypisać je wszystkie w tabelce po lewej stronie. Wybraliśmy 50 literek. Oczywiście nie stanowią one wszystkich znaków, wiele jeszcze brakuje, ale to tylko przykład. Mamy więc 50 znaków - cyfry, litery oraz kilka znaków interpunkcji. Ostatni znak, to tzw. znak spacji, czyli odstęp. 50 znaków tworzy 50 wiadomości. Każdą wiadomość (znak) będziemy przedstawiać przy pomocy odpowiedniego słowa bitowego. Ile w takim razie potrzebujemy bitów w każdym słowie?
Dla n=50 wiadomości potrzebne jest m >= log2(50)
bitów, czyli m = 6
Gdy znamy już liczbę bitów, utworzymy tabelkę z przypisanymi poszczególnym znakom kodami bitowymi. Oto ona:
Znak | Kod | Znak | Kod | Znak | Kod | Znak | Kod | Znak | Kod |
0 | 000000 | A | 001010 | H | 010100 | Ó | 011110 | X | 101000 |
1 | 000001 | Ą | 001011 | I | 010101 | P | 011111 | Y | 101001 |
2 | 000010 | B | 001100 | J | 010110 | Q | 100000 | Z | 101010 |
3 | 000011 | C | 001101 | K | 010111 | R | 100001 | Ż | 101011 |
4 | 000100 | Ć | 001110 | L | 011000 | S | 100010 | Ź | 101100 |
5 | 000101 | D | 001111 | Ł | 011001 | Ś | 100011 | , | 101101 |
6 | 000110 | E | 010000 | M | 011010 | T | 100100 | . | 101110 |
7 | 000111 | Ę | 010001 | N | 011011 | U | 100101 | : | 101111 |
8 | 001000 | F | 010010 | Ń | 011100 | V | 100110 | ? | 110000 |
9 | 001001 | G | 010011 | O | 011101 | W | 100111 | 110001 |
Mając taką tabelkę możemy przystąpić do kodowania znaków. Zakodujmy np. słowo CONAN. Zrobimy to tak:
Znak | Kod | Wynik |
C | 001101 |
001101011101011011001010011011 Zakodowane słowo CONAN |
O | 011101 | |
N | 011011 | |
A | 001010 | |
N | 011011 |
Zwróć uwagę, iż napis CONAN stał się nieczytelny dla nas, ale możliwy do rozszyfrowania. Aby to sprawdzić, spróbujmy rozszyfrować napis zawarty w następujących bitach:
010101011011010010011101100001011010001010100100101001010111001010
W pierwszym kroku wydzielamy poszczególne słowa kodowe, które mają długość po 6 bitów:
010101 011011 010010 011101 100001 011010 001010 100100 101001 010111 001010
Zgodne z tabelą kodu zamieniamy teraz poszczególne słówka kodowe na odpowiadające im literki:
010101 I |
011011 N |
010010 F |
011101 O |
100001 R |
011010 M |
001010 A |
100100 T |
101001 Y |
010111 K |
001010 A |
Udało się. Chociaż zadanie to wydaje się żmudne, to musimy pamiętać o tym, iż zwykle nie będą go wykonywać ludzie, lecz maszyny. Ponieważ potrafiliśmy zakodować znaki przy pomocy bitów oraz odtworzyć znaki z słów bitowych, to wynika stąd oczywisty wniosek, iż bity nadają się do kodowania wiadomości tekstowych. Dla potrzeb naszego przykładu wymyśliliśmy prosty kod 6 bitowy. W praktyce sposób kodowania znaków został ujednolicony na całym świecie pod standardem ASCII (American Standard Code for Information Interchange - Amerykański Standard Narodowy do Wymiany Informacji), w którym znaki kodowane są na 8 bitach. Dzięki niemu komputery mogą wymieniać ze sobą dane tekstowe poprzez sieci teleinformatyczne.
Problem kodowania znaków dotyka nas bezpośrednio. Ponieważ język polski stosuje dodatkowe znaki dla głosek Ą, Ć, Ę, itp., więc znaki te muszą posiadać odpowiednio przydzielone kody, aby były rozpoznawane (np. przez drukarkę). Sposobów przydzielenia takich kodów jest bardzo wiele (w czasach królowania systemu DOS panował w tej dziedzinie niezły bałagan). Użytkownicy systemu operacyjnego Windows są skazani na standard wymyślony przez Microsoft o nazwie Windows CP 1250. W innych systemach (np. Linux) powszechnie stosuje się standard ISO 8859-2 będący faktycznie międzynarodową normą kodowania polskich znaków diakrytycznych. Standardy Microsoftu i ISO 8859-2 różnią się między sobą kodami dla polskich literek narodowych, więc teksty kodowane w ISO 8859-2 będą niepoprawnie odczytywane w systemie Windows (i na odwrót). Widzimy więc, jak ważne jest ujednolicenie standardów kodowania informacji.
Więcej przykładów zastosowania bitów znajdziemy w rozdziale III, poświęconym pozycyjnym systemom liczbowym.
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:
|
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
Jak zobaczyliśmy w poprzednich podrozdziałach, bit jest jednostką bardzo małą. W praktyce występuje potrzeba stosowania grup bitów do zakodowania użytecznych informacji. Dlatego przyjęto odpowiednie jednostki oparte na bicie, jako ich podstawie. W poniższej tabeli przedstawiamy najczęściej stosowane wielokrotności bitu.
Symbol | Nazwa | Opis |
b |
bit |
jednostka podstawowa |
B |
bajt |
1B = 8b |
KB |
kilobajt | 1KB=1024B=8196b |
MB |
megabajt | 1MB=1024KB=1048576B |
GB |
gigabajt | 1GB=1024MB=1048576KB=1073741824B |
TB |
terabajt | 1TB=1024GB=1048576MB=1073741824KB=1099511627776B |
Jednostki w informatyce opierają się na podstawie 2. Dlatego 1KB = 210B = 1024B, a nie 1000B. W celu odróżnienia przedrostków informatycznych kilo, mega, giga i tera od zwykłych przedrostków fizycznych zapisuje się je dużą literą - 1KB, 1MB, 1GB i 1TB.
|
Gdy konstruowano pierwsze maszyny liczące, wcale nie był oczywistym fakt, iż muszą one pracować z bitami. Nie istniał wtedy jeszcze żaden wzorzec, na którym można by się oprzeć. Szukano w różnych kierunkach. Np. pierwszy komputer elektroniczny ENIAC, powstały w roku 1945, pracował na liczbach w systemie dziesiętnym, tzn. przetwarzał sygnały, które mogły przyjmować 10 różnych stanów, poziomów. Oczywiście prowadziło to do wielu problemów technicznych. Pierwszym komputerem binarnym (i do tego pracującym w binarnym systemie zmiennoprzecinkowym) stała się maszyna Z1 zbudowana przez genialnego konstruktora niemieckiego Konrada Zuse, którego obecnie uważa się za ojca komputerów. Komputer ten powstał w Niemczech w roku 1936, a więc przed ENIAC'iem.
Możemy wymienić kilka podstawowych powodów zwrócenia się w stronę bitów
(jednak jeśli interesuje cię przyszłość maszyn liczących, to
poszukaj w Internecie hasła - komputer kwantowy):
I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe