Treść - Gronowo

Transkrypt

Treść - Gronowo
Moduł 2
Zastosowanie systemów liczbowych w informacji cyfrowej
1.
2.
3.
4.
5.
Pozycyjne systemy liczbowe
Zasady zapisu liczb w pozycyjnych systemach liczbowych
Podstawowe działania na liczbach binarnych
Liczby binarne stało i zmiennoprzecinkowe
Zastosowania praktyczne systemów liczbowych w systemach informatycznych
1
Systemem liczbowym nazywamy sposób zapisywania liczb oraz zbiór reguł umożliwiających wykonywanie działań na tych liczbach. Dla każdego systemu liczbowego istnieje zbiór znaków, za pomocą których tworzy się liczby. Znaki te zwane cyframi można
zestawiać ze sobą na różne sposoby otrzymując nieskończoną liczbę kombinacji. W informatyce powszechnie stosowane są systemy liczbowe które bazują na pozycyjny sposobie zapisu liczb.
1. Pozycyjne systemy liczbowe
System pozycyjny to metoda zapisywania liczb w taki sposób, że w zależności od
pozycji danej cyfry w ciągu, oznacza ona wielokrotność potęgi pewnej liczby uznawanej
za podstawę danego systemu liczbowego. Liczby zapisujemy przy pomocy cyfr od strony
lewej do prawej. W takim systemie zapisu, każda pozycja ma ściśle określoną i niezmienną wagę liczbową, która jest równa podstawie podniesionej do potęgi o wartości
numeru pozycji. Wartość liczby w dziesiętnym systemie liczenia uzyskujemy po zsumowaniu poszczególnych iloczynów wag i cyfr pozycji.
Jeżeli p oznacza podstawę systemu pozycyjnego to dowolną liczbę lp n-cyfrową
można wówczas zapisać w następującej postaci:
n1
l p  a i * p i
i 0
an-1 an-2 … a2 a1 a0 = an-1 * pn-1 + an-2 * pn-2 +… + a2 * p2 + a1 * p1 + a0 * p0,
gdzie: ai to cyfry należące do zbioru {0, 1, …, p–1}, pi - waga, i - numer pozycji cyfry
w ciągu liczbowym, n - liczba cyfr w ciągu, * - iloczyn.
Do podstawowych cech dowolnego systemu pozycyjnego o podstawie p zaliczamy:
- system pozycyjny charakteryzuje liczba zwana podstawą systemu pozycyjnego,
- do zapisu liczby służą cyfry,
- cyfr jest zawsze tyle, ile wynosi podstawa systemu: 0, 1, 2, ..., (p-1),
- cyfry ustawiamy na kolejnych pozycjach,
- pozycje numerujemy od 0 poczynając od strony prawej zapisu,
- każda pozycja posiada swoją wagę,
- waga jest równa podstawie systemu podniesionej do potęgi o wartości numeru
pozycji,
- cyfry określają ile razy waga danej pozycji uczestniczy w wartości liczby,
- wartość liczby obliczamy sumując iloczyny cyfr przez wagi ich pozycji.
Do najbardziej popularnych i stosowanych w informatyce pozycyjnych systemów
liczbowych zaliczamy:
- system dziesiętny/decymalny,
- system dwójkowy/binarny,
- system szesnastkowy/heksadecymalny,
- system ósemkowy/oktalny.
Liczby w poszczególnych systemach zaznaczane są za pomocą indeksu dolnego
w postaci liczby podstawy lub pierwszej litery nazwy angielskiej.
2. Zasady zapisu liczb w pozycyjnych systemach liczbowych
2.1 System dziesiętny/decymalny
W życiu codziennym posługujemy się systemem dziesiętnym. Podstawą pozycji są
kolejne wielokrotności liczby 10. Do zapisu liczb korzysta się z dziesięciu cyfr, którymi
są 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
2
Zapis liczby 345 oznacza, że cyfra 5 znajduje się na pierwszej pozycji, 4 na drugiej,
3 na trzeciej. Pierwsza ma wagę potęgi zerowej postawy 100 czyli 1. Dlatego często nazywana jednostkami. Druga pozycja ma wagę 101czyli 10 (dziesiątki). Trzecia pozycja
ma wagę 102czyli 100 (setki). Dlatego:
345 = 3*102+4*101+5*100=3*100 + 4*10 +5*1 = 300 +40 +5
2.2 System dwójkowy/binarny
Cyfrowe urządzenia elektroniczne wykorzystują dwójkowy pozycyjny system liczbowy, gdzie podstawą jest liczba 2, a liczby zapisuje się za pomocą dwóch cyfr
arabskich: 0 lub 1. Zapis liczby dwójkowej jest dłuższy niż dziesiętnej, jednak
stosowanie tylko dwóch cyfr ułatwia budowanie układów półprzewodnikowych, gdzie
w uproszczeniu 1 oznacza przepływ prądu a 0 brak przepływu.
Przykładowy zapis liczby w systemie dwójkowym wygląda następująco: 1001(2).
Zaczynając czytać od strony prawej taki zapis interpretujemy wagę każdej pozycji jako
liczbę 2 podnoszoną do kolejnej potęgi.
Rysunek 2.1 Waga pozycji w systemie dwójkowym.
1001(2)
1
0
0
1
23
22
21
20
Źródło własne
Kluczowe dla umiejętności posługiwania się tym systemem jest zapamiętanie kolejnych potęg liczby 2. W tabeli 2.1 przedstawiono pomocne zestawienie wag systemu
binarnego.
Tabela 2.1 Wagi systemu dwójkowego
29
28
27
26
25
24
23
22
21
20
210
1024 512
256
128
64
32
16
8
4
2
1
Źródło własne
Aby dokonać konwersji liczby dwójkowej na postać dziesiętną, należy każdą cyfrę
mnożyć przez wagę otrzymaną z podstawy podniesionej do potęgi równej pozycji poczynając od prawej strony. Po przemnożeniu cyfr przez wagi należy je zsumować.
Otrzymana liczba dziesiętna jest odpowiednikiem liczby binarnej. Na przykładzie poniżej liczba zapisana w systemie dwójkowym jako 1001(2) odpowiada 21(10)w systemie
dziesiętnym.
Przykład 1:
1001(2)= 1*20+0*21+0*22+1*23 = 1+8 =9(10)
Aby dokonać zamiany liczby dziesiętnej na postać binarną, należy wykonać cykliczne dzielenie przez 2 z resztą w postaci liczby całkowitej 1 lub 0. Wynik
z pierwszego dzielenia ponownie jest dzielony przez 2, i tak aż do uzyskania 0. Liczba
3
binarna powstaje na bazie reszt zapisanych w odwrotnej kolejności.
Tabela 2.2 Przykład zamiany liczby dziesiętnej na postać binarną.
Działanie
Wynik
Reszta
9:2
4
1
4:2
2
0
2:2
1
0
1:2
0
1
Źródło własne
Łatwo możemy dopatrzeć się zależności, że jedna pozycja zapisu liczby binarnej
przyjmująca zapis 1 lub 0 oznacza 1 bit informacji.
2.3 System szesnastkowy/heksadecymalny.
Podstawę systemu heksadecymalnego stanowi 16 cyfr. Pierwsze 10 to arabskie cyfry: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, pozostałe 6 to pierwsze litery alfabetu łacińskiego: A, B, C, D,
E, F oznaczające kolejno dziesiętne: 10, 11, 12, 13, 14, 15.
Przykładem zapisu liczby w systemie szesnastkowym jest: F15(16). Chcąc dokonać
konwersji liczby szesnastkowej na postać dziesiętną należy każdą cyfrę przemnożyć
przez wagę otrzymaną z podstawy systemu podniesionej do potęgi równej pozycji zaczynając od prawej strony. Po przemnożeniu cyfr przez wagi wykonujemy sumowanie.
Otrzymana liczba dziesiętna jest odpowiednikiem liczby szesnastkowej. Liczba zapisana
w systemie szesnastkowym jako F15(16) odpowiada 1221(10)w systemie dziesiętnym.
Przykład 2:
F15(16) = 5*160+ 1*161+15*162 =5 + 16 + 3840 = 3861(10)
Widać na tym przykładzie wyraźnie, że ręczna konwersja liczb z systemu szesnastkowego może być skomplikowana. Dlatego też w konwersjach długich liczb można używać aplikacji systemowej kalkulator w widoku profesjonalnym lub programisty (w zależności od wersji systemu Windows).
4
Rysunek 2.2 Kalkulator w widoku programisty dla Windows 7.
Źródło własne
Aby dokonać zamiany liczby dziesiętnej na postać szesnastkową, należy wykonać
cykliczne dzielenie przez 16 z resztą w postaci liczby całkowitej od 0 do 15. Wynik uzyskany z pierwszego dzielenia ponownie jest dzielony przez 16, i tak aż do uzyskania 0.
Liczba szesnastkowa powstaje na bazie reszt zapisanych w odwrotnej kolejności. Wartości powyżej 9 koduje się za pomocą odpowiednich cyfr-liter. Przykład takiego działania przedstawia tabela 2.3.
Tabela2.3 Przykład zamiany liczby dziesiętnej na postać szesnastkową.
Działanie
Wynik
Reszta
3861:16
241
5
241:16
15
1
15:16
0
15(F)
Źródło własne
Konwersję liczby binarnej na postać szesnastkową należy rozpocząć od pogrupowania ciągu po cztery cyfry. Pomocna będzie zawartość tabeli 2.4 Grupowanie rozpoczynamy od prawej strony, aż do uzyskania końca liczby. Jeżeli ostatnie cyfry w pogrupowanej liczbie mają mniej niż cztery znaki, należy uzupełnić puste pozycje zerami.
Konwersja z liczby szesnastkowej na binarną jest jeszcze prostsza. Wystarczy na podstawie tabeli 2.4 cyfry z systemu szesnastkowego zamienić na czterocyfrowe ciągi binarne i połączyć je w jeden zapis. Wynik konwersji należy zapisywać od strony lewej
a nie prawej.
5
Tabela 2.4 Porównanie zapisu cyfr systemów: szesnastkowego i binarnego.
Cyfra szesnastkowa Cyfra dwójkowa Cyfra szesnastkowa
Cyfra dwójkowa
0
0000
8
1000
1
0001
9
1001
2
0010
A
1010
3
0011
B
1011
4
0100
C
1100
5
0101
D
1101
6
0110
E
1110
7
0111
F
1111
Źródło własne
Przykład konwersji liczby szesnastkowej na binarną:
F15(16) =1111 0001 0101(2)
Przykład konwersji liczby binarnej na szesnastkową:
1000111010100(2) = 0001 0001 1101 0100 =11D4(16)
2.4 System ósemkowy/oktalny.
System ósemkowy jest pozycyjnym system liczbowym, w którym podstawę
stanowi 8 a do zapisu używa się kolejnych cyfr arabskich: 0, 1, 2, 3, 4, 5, 6, 7.
Przykładem zapisu liczb w systemie ósemkowym jest 107(8). Konwersję liczb
ósemkowych na postać dziesiętną i odwrotnie wykonuje się analogicznie jak
w przykładach poświęconych systemom binarnemu i szesnastkowemu. Konwersję
zapisu ósemkowego na dwójkowy i odwrotnie wykonuje się analogicznie jak
w przypadku systemu szesnastkowego, wykorzystując zapisy z tabeli 2.5.
Tabela 2.5 Porównanie zapisu cyfr systemów: oktalnego i binarnego.
Cyfra oktalna
Cyfra binarna
0
000
1
001
2
010
3
011
4
100
5
101
6
110
7
111
Źródło własne
Systemy pozycyjne nie są osiągnięciem naszych czasów. Na przykład, zanim system dziesiętny stał się systemem powszechnym, różne cywilizacje posługiwały się in6
nymi systemami. Na przykład system dwójkowy spotykano u niektórych plemion Australii i Polinezji. Natomiast Majowie w I w. p.n.e. używali układu dwudziestkowego. Babilończycy posługiwali się pozycyjnym sześćdziesiętnym systemem liczbowym. Podzielili godzinę na 60 minut, a minutę na 60 sekund. Inne pozostałości niektórych systemów,
stosowanych w różnych epokach spotykamy w podziale roku na 12 miesięcy lub posługiwaniu się jednostką miary – tuzin.
3. Podstawowe działania na liczbach binarnych.
3.1 Dodawanie liczb binarnych.
Dodawanie liczb binarnych opiera się na tabliczce dodawania, w której reprezentowane są cztery sumy cząstkowe pokazane w tabeli 2.6.
Tabela 2.6 sumy cząstkowe liczb binarnych
0+0=0
0+1=1
1+0=1
1+1=0
i 1 do przeniesienia
Źródło własne
Zasady podstawowej arytmetyki określają wyniki sumowania w trzech pierwszych
wierszach. W czwartym, wynikiem jest liczba 2, która w systemie binarnym zapisywana
jest jako 10, w związku z tym 0 pozostaje w kolumnie, natomiast 1 przenoszona jest do
następnej kolumny.
Przykład 3:
1 0 0(2)
+
1 0 1(2)
=
1 0 0 1(2)
3.2 Odejmowanie liczb binarnych.
Odejmowanie liczb binarnych opiera się na tabliczce odejmowania, w której reprezentowane są cztery różnice cząstkowe pokazane w tabeli 2.7.
Tabela 2.7 Różnice cząstkowe liczb binarnych.
0–0=0
1–0=1
1–1=0
0–1=1
i 1 do pożyczenia z następnej kolumny
Źródło własne
7
Ostatnia różnica 0 – 1 daje jedynkę oraz wymusza pożyczkę z następnej
kolumny.
Przykład 4:
1 0 0 1(2)
=
1 0 1(2)
1 0 0(2)
3.2 Mnożenie liczb binarnych.
Mnożenie liczb binarnych opiera się na tabliczce mnożenia, w której reprezentowane są cztery iloczyny cząstkowe pokazane w tabeli 2.8.
Tabela 2.8 Iloczyny cząstkowe liczb binarnych.
0*0=0
1*0=0
1*1=1
0*1=0
Źródło własne
Mnożną wymnaża się przez wszystkie kolejne cyfry mnożnika analogicznie do
mnożenia sposobem pisemnym, a uzyskane wyniki wprowadza się, począwszy od aktualnie używanej cyfry mnożnika w wierszach. Powstałe wiersze sumujemy zgodnie z zasadami dodawania liczb binarnych.
Przykład 5:
×
+
0
1
0
1
1
0
0
1
1
0
0
0
1
0
1
0
1
0
1
0
1
1
0
0
0(2)
0(2)
0
1
0
0(2)
3.2 Zapis ujemnych liczb binarnych.
Stosując system binarny w informatyce (w systemach komputerowych) nie mamy
możliwości stosowania znaku (-), który pozwoliłby określić liczbę ujemną tak, jak to ma
miejsce w przypadku systemu dziesiętnego. Mamy do dyspozycji tylko bity 0 i 1. Jedną
z najpopularniejszych metod zapisu liczb ujemnych jest metoda uzupełnień do 2 (U2).
Istotą tej metody jest to, ze znak jest oznaczany przez cyfrę binarną, stanowiącą integralną część liczby,, co pozwala na wykonywanie obliczeń arytmetycznych.
Aby uzyskać zapis binarny dziesiętnej liczby ujemnej, na początku obliczamy jej
postać binarną z wartości bezwzględnej. Powstałą liczbę binarną należy uzupełnić zerami do ilości cyfr będących krotnością dwójki. Następnie należy zamienić wszystkie
cyfry w liczbie binarnej na przeciwne, czyli jedynki na zera i odwrotnie. A na koniec do
powstałej liczby dodajemy binarną jedynkę, a wynik jest ujemną liczbą binarną.
8
Przykład 6:
1. konwersja 5(10)=101(2)
2. uzupełnienie 0101(2)
3. zamiana 1010(2)
4. dodanie jedynki:
+
1 0 1 0(2)
0 0 0 1(2)
=
1 0 1 1(U2)
Sprawdzenie: 1*(-23)+0*22+1*21+1*20= -8+2+1=-8+3=-5
4. Liczby binarne stało i zmiennoprzecinkowe.
Podobnie jak w systemie dziesiętnym liczby binarne również mogą być zapisane
w postaci ułamkowej. Zapis binarnych liczb pozycyjnych z przecinkiem może przyjąć
po-stać stało lub zmiennoprzecinkową.
Liczby stałoprzecinkowe umożliwiają zapis liczb w postaci ułamkowej, gdzie pozycja przecinka ustalana jest arbitralnie w zależności od wymaganej dokładności. Binarną
liczbę stałoprzecinkową można potraktować jako złożenie dwóch części, liczby całkowitej oraz ułamkowej rozdzielonych przecinkami: 1011, 11(2)
Wartości wag części ułamkowej przyjmują postać ułamków, gdzie dokładność
określona jest przez wagę ostatniej cyfry.
W porównaniu do liczb stałoprzecinkowych, liczby zmiennoprzecinkowe umożliwiają obsługę większego zakresu liczb kosztem wolniejszego przetwarzania i mniejszej
dokładności. Termin „zmiennoprzecinkowe” oznacza, że nie istnieje stała liczba cyfr
przed i po przecinku. Liczba zmiennoprzecinkowa składa się z dwóch części: liczby stałoprzecinkowej — mantysy (m) oraz podstawy (b) podniesionej do potęgi, zwanej cechą
lub wykładnikiem (e).
Liczba zmiennoprzecinkowa = m * be
5. Zastosowania praktyczne systemów liczbowych w systemach informatycznych.
Powszechnie dwójkowy system liczbowy używany jest w elektronice cyfrowej i informatyce, gdzie minimalizacja liczby stanów (do dwóch) pozwala na prostą implementację sprzętową odpowiadającą zazwyczaj stanom wyłączony i włączony. Najbardziej
znanym obszarem zastosowań są funktory logiczne nazywane też bramkami logicznymi.
Są to elementy konstrukcyjne układów cyfrowych składające się z odpowiednio połączonych rezystorów, tranzystorów, kondensatorów i diod półprzewodnikowych.
Podstawowe bramki logiczne AND, OR i NOT odzwierciedlają funkcje logiczne opisane przez algebrę Boole’a. Współcześnie fizyczne funktory rzadko budowane są na bazie pojedynczych elementów półprzewodnikowych, najczęściej korzysta się z gotowych
bramek zawartych w układach scalonych typu TTL (rysunek 2.4). Podstawowe bramki
OR i AND (oraz pochodne) mają dwa wejścia i jedno wyjście, natomiast bramka NOT ma
jedno wejście i jedno wyjście. Działanie funktorów prezentowane jest za pomocą tablic
prawdy, w których opisuje się kolejne kombinacje stanów na wejściach oraz odpowiednie wartości na wyjściu. Piktogramy najpopularniejszych bramek oraz tablice prawdy
prezentuje rysunek 2.3.
9
Rysunek 23 Tablice prawdy i piktogramy bramek logicznych.
Źródło: http://www.if.p.lodz.pl
Rysunek 2.4 Układ TTL 7432 wykorzystujący bramki logiczne
Źródło: http://zto.ita.pwr.wroc.pl
Innym przykładem praktycznego zastosowania systemu binarnego może być proces wyznaczania adresu sieci lub maski podsieci na podstawie adresu IP w notacji dwójkowej. Sam adres IPv4 (32 bity) zapisuje się w postaci binarnej lub decymalnej.
10
Przykład 7:
adres IPv4(2) – 11000000. 10101000. 00000001.
00000001 adres IPv4(10) – 192.168.1.1
Przykładem praktycznego zastosowania systemu szesnastkowego jest określanie
adresu IPv6 lub adresacja kart sieciowych. Posiadają one 48-bitowy unikatowy adres
sprzętowy (MAC) zapisany w postaci np. 00:50:56:C0:FF:08. Ponadto adres IPv6, którego zapis składa się z 128 bitów zapisywany jest jako ciąg podzielony na 8 16-bitowych
bloków. Przedstawia się je jako 4-znakowe liczby szesnastkowe rozdzielone dwukropkami.
Przykład 8:
adres IPv6(16) - 21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A
Szesnastkowy system liczbowy stosuje się również, w przypadku programowania
niskopoziomowego i sterowania innymi elementami sprzętu komputerowego.
Zastosowanie systemu ósemkowego można zobaczyć w uniksowym poleceniu
chmod, służącym do zmiany uprawnień dostępu do plików i katalogów.
Bibliografia:
1. Kowalski T., Kwalifikacja E.12 Montaż i eksploatacja komputerów osobistych oraz
urządzeń peryferyjnych, Gliwice, Helion 2012
2. Marciniuk T., Pytel K., Osetek S., Przygotowanie stanowiska komputerowego do
pracy. Część 1 i 2, Warszawa, WSiP 2013
3. Mueller S., Rozbudowa i naprawa komputerów PC., Gliwice, Helion 2009
4. Wojtuszkiewicz K., Urządzenia techniki komputerowej, Warszawa, PWN 2011
5. Adamczewski P., Słownik informatyczny. Gliwice, Helion 2005
Netografia:
1. http://zto.ita.pwr.wroc.pl - Strona główna Zespołu Teorii i Obwodów, Katedra
Systemów Przetwarzania Sygnałów na Wydziale Elektroniki Politechniki
Wrocławskiej
2. http://www.if.p.lodz.pl - Strona główna Instytutu Fizyki Politechniki Łódzkiej
11