Systemy liczenia i kodowania informacjiSpis treści
Spis tabel
Sposoby przedstawiania liczb - zasada systemu pozycyjnego
Termin „liczba” kojarzy się nam na ogół z jej zapisem w systemie dziesiętnym. Ta sama liczba może być przedstawiona na wiele sposobów. Wybór reprezentacji dyktują warunki techniczne. Symbole używane do zapisu liczb nazywamy cyframi. W życiu codziennym do zapisu liczb używamy tak zwanego pozycyjnego systemu dziesiętnego.
System dziesiętny
Polega on na tym, że liczby przedstawia się za pomocą 10 symboli cyfrowych (bo jest to system dziesiętny), a mianowicie 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 zaś znaczenie cyfry zależy nie tylko od niej samej, ale i od jej pozycji (miejsca) w stosunku do innych cyfr (stąd nazwa systemu pozycyjnego).
Na przykład liczba 7710 ( Indeks „10” znajdujący za liczbą informuje w jakim systemie dana liczba jest zapisana) zawiera dwie takie same cyfry, ale ta na lewo oznacza siedem dziesiątek a ta na prawo tylko siedem jednostek.
OGÓLNA ZASADA SYSTEMU POZYCYJNEGO JEST TAKA, ŻE KOLEJNE POZYCJE, IDĄC OD PRAWEJ STRONY DO LEWEJ, OZNACZAJĄ CORAZ WYŻSZE POTĘGI TAK ZWANEJ PODSTAWY SYSTEMU. Dla systemu dziesiętnego podstawą systemu jest oczywiście DZIESIĘĆ. Stąd kolejne pozycje w systemie dziesiętnym oznaczają:
... 103 = 1000 102 = 100 101 = 10 100 = 1
Liczbę Liczbę Liczbę Liczbę
tysięcy setek dziesiątek jednostek
Przykład: 63810 = 6•102 + 3•101 + 8•100
W tym zapisie każda cyfra znajdująca się o jedną pozycję w lewo jest zawsze dziesięciokrotnie większa od analogicznej cyfry stojącej obok niej z prawej strony.
W pozycyjnym systemie dziesiętnym największą liczbę, jaka można zapisać przy użyciu pojedynczej cyfry jest liczba dziewięć a liczbę dziesięć zapisuje się już przy użyciu dwóch cyfr: 1 i 0.
System dwójkowy
Jeśli za podstawę systemu przyjmujemy liczbę DWA to otrzyma się SYSTEM DWÓJKOWY. W systemie dwójkowym istnieją tylko dwie cyfry: 0;1 za pomocą których możemy zapisać dowolną liczbę. Dowolna liczba dwójkowa zawiera więc same zera i jedynki.
W systemie dwójkowym największą liczbę, jaka można przedstawić przy użyciu pojedynczej cyfry jest liczba jeden.
Ponieważ podstawą systemu jest liczba dwa, kolejne pozycje oznaczają:
... 23 = 8 22 = 4 21 = 2 20 = 1
Liczbę Liczbę Liczbę Liczbę
ósemek czwórek dwójek jednostek
Na przykład, jeśli ktoś posługujący się systemem dwójkowym napisze 10112, to ma na myśli:
1•23+0•22+1•21+1•20 czyli liczbę, którą w systemie dziesiętnym zapisuje się tak: 1110.
System czwórkowy
Jeżeli za podstawę systemu przyjmiemy liczbę CZTERY to otrzyma się SYSTEM CZWÓRKOWY. Istnieją w nim tylko 4 cyfry za pomocą których możemy zapisać dowolną liczbę: 0,1,2,3, a kolejne pozycje w liczbie oznaczają :
... 43 = 64 42 = 16 41 = 4 40 = 1
Liczba Liczba Liczba Liczba
sześćdziesiątek- szesnastek czwórek jednostek
czwórek
Jeśli ktoś posługujący się systemem czwórkowym napisze 3124, to ma na myśli:
3•42+1•41+2•40 czyli liczbę, którą w systemie dziesiętnym zapisuje się tak: 5410.
W systemie czwórkowym największą liczbę, jaką można zapisać przy użyciu pojedynczej cyfry jest liczba trzy.
System ósemkowy
Gdy za podstawę systemu przyjęta zostanie liczba OSIEM to otrzyma się SYSTEM ÓSEMKOWY.
W systemie ósemkowym istnieje tylko 8 cyfr: 0,1,2,3,4,5,6,7, a kolejne pozycje w liczbie oznaczają:
... 82 = 64 81 = 8 80 = 1
Liczba Liczba Liczba
sześćdziesiątek- ósemek jednostek
czwórek
Jeśli ktoś posługujący się systemem ósemkowym napisze 2538, to ma na myśli:
2•82+5•81+3•80, czyli liczbę, która w systemie dziesiętnym zapisuje się tak: 17110.
Największa liczbę, jaka można zapisać w systemie ósemkowym przy użyciu pojedynczej cyfry jest liczba siedem.
System szesnastkowy
Gdy za podstawę systemu przyjęta zostanie liczba SZESNAŚCIE to otrzyma się SYSTEM SZESNASTKOWY.
W systemie szesnastkowym kolejne miejsca w liczbie oznaczają:
... 162 = 256 161 = 16 160 = 1
Liczbę Liczbę Liczbę
dwustu- szesnastek jednostek
pięćdziesiątek-
szóstek
Istnieje w nim 16 cyfr : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B,C, D, E, F
Do zapisania cyfr dziesięć, jedenaście,... piętnaście, wykorzystano litery od A do F.
Jeżeli ktoś posługujący się systemem szesnastkowym napisze 1A316, to ma na myśli:
1•162+10•161+3•160, czyli liczbę, która w systemie dziesiętnym zapisuje się jako 41910.
Największą liczbę, jaka można zapisać w systemie szesnastkowym za pomocą pojedynczej cyfry jest liczba piętnaście (litera F).
Relacje pomiędzy poszczególnymi systemami numeracji
Relacje pomiędzy poszczególnymi systemami numeracji
System dziesiętny |
System dwójkowy |
System czwórkowy |
System ósemkowy |
System szesnastkowy |
0 |
0000 |
0 |
0 |
0 |
1 |
0001 |
1 |
1 |
1 |
2 |
0010 |
2 |
2 |
2 |
3 |
0011 |
3 |
3 |
3 |
4 |
0100 |
10 |
4 |
4 |
5 |
0101 |
11 |
5 |
5 |
6 |
0110 |
12 |
6 |
6 |
7 |
0111 |
13 |
7 |
7 |
8 |
1000 |
100 |
10 |
8 |
9 |
1001 |
101 |
11 |
9 |
10 |
1010 |
102 |
12 |
A |
11 |
1011 |
103 |
13 |
B |
12 |
1100 |
110 |
14 |
C |
13 |
1101 |
111 |
15 |
D |
14 |
1110 |
112 |
16 |
E |
15 |
1111 |
113 |
17 |
F |
Nieprzydatność systemu dziesiętnego w urządzeniach komputera
System dziesiętny przedstawiania liczb stosowany powszechnie w nauce, technice i życiu codziennym, okazał się bardzo niewygodny w maszynach elektronicznych.
Przy przechowywaniu liczb w urządzeniu technicznym korzystnie jest wartość każdej cyfry przedstawić jako stan pewnego zjawiska fizycznego, np. napięcia na kondensatorze. W systemie dziesiętnym (systemie o podstawie 10) należałoby dziesięciu cyfrom przypisać dziesięć różnych wartości napięcia. Rozpoznawanie cyfry, zakodowanej w formie napięcia, wymagałoby niezawodnego rozróżniania tych napięć, podobnie jak czyni to woltomierz cyfrowy. Jest to technicznie możliwe, lecz w każdym razie gdyby taki układ zbudowano, to pracowałby on niestabilnie. Z tego względu urządzenia elektroniczne preferują tzw. SYSTEM DWÓJKOWY (binarny), gdyż łatwiej i pewniej jest używać tylko dwóch skrajnych stanów, np. 0 Volt i napięcia zbliżonego do pewnej wartości maksymalnej, przypuśćmy 5 Volt. Technologia wytwarzania elementów dwustanowych jest prosta i tania, co decyduje o opłacalności produkcji masowej.
Konwersja systemów
Ponieważ komputer posługuje się systemem dwójkowym, a ludzie - dziesiętnym, przekształcenie postaci zapisu liczb (tzw. konwersja systemów) z systemu dwójkowego na dziesiętny i odwrotnie jest czynnością dość częstą.
Konwersja dwójkowo - dziesiętna
Ponieważ podstawą liczenia systemu dwójkowego jest liczba DWA (zapisywana jako 10 - czytaj: jeden zero) to kolejne pozycje oznaczają (wagi bitów):
Nr bitu |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Waga bitu |
27 = 128 |
26=64 |
25=32 |
24=16 |
23=8 |
22=4 |
21=2 |
20=1 |
Bity są ponumerowane od prawej do lewej, zaczynając od 0. WAGA BITU to podstawa systemu podniesiona do potęgi odpowiadającej numerowi bitu. Waga bitu zerowego wynosi 1. We wszystkich systemach pozycyjnego zapisu liczb całkowitych, skrajnie prawa pozycja jest zawsze równa liczbie 1 bo jest to podstawa systemu do potęgi zero.
Aby znaleźć dziesiętny odpowiednik liczby dwójkowej najprościej dokonać jej rozwinięcia. Każdej pozycji przypisana jest waga, a wykładnikiem potęgi jest numer pozycji.
Przykład
Przekształcenie liczby dwójkowej 11011011 na liczbę dziesiętną
10100112 = 1•26+0•25+1•24+0•23+0•22+1•21+1•20 = 8310
Konwersja dziesiętno - dwójkowa
W celu przekształcenia liczby wyrażonej w systemie dziesiętnym na system dwójkowy należy liczbę tę dzielić kolejno przez 2, dopóki iloraz nie będzie równy zero. Po każdym dzieleniu należy zapisać otrzymaną resztę. Zapis liczby w systemie dwójkowym otrzymamy odczytując kolejno reszty z dzielenia, począwszy od ostatniej reszty do pierwszej.
PRZYKŁAD: przekształcenie liczby 43710 na liczbę zapisaną w systemie dwójkowy.
Dzielenie Iloraz Reszta Inny sposób zapisu
przez 2 cząstkowy
437 : 2 218 1 437 = 436 + 1
218 : 2 109 0 218 = 218 + 0
109 : 2 54 1 109 = 108 + 1
54 : 2 27 0 54 = 54 + 0
27 : 2 13 1 27 = 26 + 1
13 : 2 6 1 13 = 12 + 1
6 : 2 3 0 6 = 6 + 0
3 : 2 1 1 3 = 2 + 1
1 = 0 + 1
WYNIK : 1101101012 (kierunek odczytywania - od dołu)
Liczba dziesiętna 43710 ma w systemie dwójkowym postać 1101101012
Powyższa metoda tłumaczenia liczb z systemu dziesiętnego na dwójkowy może być zastosowana wyłącznie do liczb całkowitych.
Konwersja szesnastkowo - dziesiętna
W celu znalezienia wartości liczby szesnastkowej w zapisie dziesiętnym należy zastosować ten sam algorytm, który został podany dla konwersji dwójkowo - dziesiętnej.
Przykład
Znajdź wartość następującej liczby szesnastkowej w zapisie dziesiętnym:
C1C0A6E16
C1C0A6E16 = 12•167+1•166+12•165+0•164+8•163+10•162+6•161+14•160 = 325062103810
Konwersja dziesiętno - szesnastkowa
Konwersja ta przebiega zgodnie z algorytmem podanym dla konwersji dziesiętno - binarnej (dwójkowej), przy czym dzielnikiem jest tu liczba 16. Liczba dzieleń jest równa liczbie cyfr zapisu szesnastkowego.
Konwersja liczby 325062103810 do zapisu szesnastkowego przebiega w następujący sposób:
I
2 0 3 1 6 3 8 1 4
3 2 5 0 6 2 1 0 3 8 : 1 6
3 2
0 5 0
4 8
2 6
1 6
1 0 2
9 6
6 1
4 8
1 3 0
1 2 8
2 3
1 6
7 8
6 4
1 4 → E
II
1 2 6 9 7 7 3 8
2 0 3 1 6 3 8 1 4 : 1 6
1 6
4 3
3 2
1 1 1
9 6
1 5 6
1 4 4
1 2 3
1 1 2
1 1 8
1 1 2
6 1
4 8
1 3 4
1 2 8
6 → 6
III
7 9 3 6 0 8
1 2 6 9 7 7 3 8 : 1 6
1 1 2
1 4 9
1 4 4
5 7
4 8
9 7
9 6
1 3 8
1 2 8
1 0 → A
IV
4 9 6 0 0
7 9 3 6 0 8 : 1 6
6 4
1 5 3
1 4 4
9 6
9 6
0 0 8 → 8
V
3 1 0 0
4 9 6 0 0 : 1 6
4 8
1 6
1 6
0 → 0
VI
1 9 3
3 1 0 0 : 1 6
1 6
1 5 0
1 4 4
6 0
4 8
1 2 → C
VII
1 2
1 9 3 : 1 6
1 6
3 3
3 2
1 → 1
VIII
1 2 → C
Otrzymana liczba to: C 1 C 0 8 A 6 E16
Ze względu na dość żmudny proces dzielenia przez liczbę 16 można również dokonać konwersji dziesiętno binarnej, a następnie kolejne czwórki bitów odpowiednio przedstawić w zapisie szesnastkowym, np.:
3250621038 = 3250621638 + 0
1625310519 = 1625310518 + 1 E
812655259 = 812655258 + 1
406327629 = 406327628 + 1
203163814 = 203163814 + 0
101581907 = 101581906 + 1 6
50790953 = 50790952 + 1
25395476 = 25395476 + 0
12697738 = 12697738 + 0
6348869 = 6348868 + 1 A
3174434 = 3174434 + 0
1587217 = 1587216 + 1
793608 = 793608 + 0
396804 = 396804 + 0 8
198402 = 198402 + 0
99201 = 99200 + 1
49600 = 49600 + 0
24800 = 24800 + 0 0
12400 = 12400 + 0
6200 = 6200 + 0
3100 = 3100 + 0
1550 = 1550 + 0 C
775 = 774 + 1
387 = 386 + 1
193 = 192 + 1
96 = 96 + 0 1
48 = 48 + 0
24 = 24 + 0
12 = 12 + 0
6 = 6 + 0 C
3 = 2 + 1
1 = 0 + 1
Otrzymana liczba to: C 1 C 0 8 A 6 E16
Konwersja ósemkowo - dziesiętna
W celu znalezienia wartości liczby ósemkowej w zapisie dziesiętnym należy zastosować ten sam algorytm, który został podany dla konwersji dwójkowo - dziesiętnej.
Przykład
Znajdź wartość następującej liczby ósemkowej w zapisie dziesiętnym:
265728
265728 = 2•84+6•83+5•82+7•81+2•80 = 1164210
Konwersja dziesiętno - ósemkowa
Konwersja ta przebiega zgodnie z algorytmem podanym dla konwersji dziesiętno - binarnej (dwójkowej), przy czym dzielnikiem jest tu liczba 8.
Ze względu na dość żmudny proces dzielenia przez liczbę 8 można dokonać konwersji dziesiętno binarnej, a następnie kolejne trójki bitów odpowiednio przedstawić w zapisie ósemkowym, np.:
Zamień liczbę 1164210 na liczbę zapisaną w systemie ósemkowym.
Dokonujemy konwersji liczby 1164210 na liczbę zapisaną w systemie dwójkowym
1164210 = 0101101011110102
2 6 5 7 2
Otrzymana liczba to: 2 6 5 7 2 8
Konwersja czwórkowo - dziesiętna
W celu znalezienia wartości liczby czwórkowej w zapisie dziesiętnym należy zastosować ten sam algorytm, który został podany dla konwersji dwójkowo - dziesiętnej.
Przykład
Znajdź wartość następującej liczby czwórkowej w zapisie dziesiętnym:
23113224
23113224 = 2•46+3•45+1•44+1•43+3•42+2•41+2•40 = 1164210
Konwersja dziesiętno czwórkowa
Konwersja ta przebiega zgodnie z algorytmem podanym dla konwersji dziesiętno - binarnej (dwójkowej), przy czym dzielnikiem jest tu liczba 4.
Ze względu na dość żmudny proces dzielenia przez liczbę 4 można dokonać konwersji dziesiętno binarnej, a następnie kolejne dwójki bitów odpowiednio przedstawić w zapisie czwórkowym, np.:
Zamień liczbę 1164210 na liczbę zapisaną w systemie czwórkowym.
Dokonujemy konwersji liczby 1164210 na liczbę zapisaną w systemie dwójkowym
1164210 = 101101011110102
2 3 1 1 3 2 2
Otrzymana liczba to: 23113224
Zasady wykonywania działań arytmetycznych w systemie dwójkowym
Dodawanie
Dwie liczby dwójkowe dodaje się tak jak dwie liczby dziesiętne tzn. dodaje się najpierw ostatnią cyfrę jednej liczby do ostatniej cyfry drugiej liczby, następnie przedostatnią cyfrę pierwszej liczby do przedostatniej cyfry drugiej liczby itd., ponieważ jednak w liczbach dwójkowych występują jedynie cyfry 0 i 1, to przy dodawaniu występują tylko 3 następujące przypadki:
0 + 0 = 0
0 + 1 = 1
1 + 1 = 10 ( 1+1 daje nam zero w danej pozycji cyfrowej oraz przeniesienie 1 do następnej pozycji).
W systemie dziesiętnym 1+1=2, ale w systemie dwójkowym liczbę 2 zapisuje się jako 10
Stosując te zasady łatwo dodać do siebie dwie przykładowe liczby dwójkowe:
0 0 0 1 0 1 1 0 (dwadzieścia dwa) 1•24+0•23+1•22+1•21+0•20= 2210
+ 0 0 0 0 1 0 1 1 (jedenaście) 1•23+0•22+1•21+1•20= 1110
-----------
0 0 1 0 0 0 0 1 (trzydzieści trzy) 1•25+0•24+0•23+0•22+0•21+1•20= 3310
Nieco trudniejsza jest operacja dodawania, gdyby trzeba dodać nie dwie liczby, jak w podanym przykładzie, lecz cały szereg liczb. W tym wypadku pewne kłopoty sprawia pamiętanie jedynek przenoszonych do starszych pozycji cyfrowych. Aby nie komplikować schematów liczących komputera ta trudność rozwiązana została w ten sposób, że w urządzeniach arytmetycznych komputera są sumowane wyłącznie 2 liczby. Do sumy 2 liczb dodaje się liczbę trzecią, do sumy 3 liczb liczbę czwartą itd.
Przykład
Dodaj do siebie w zapisie dwójkowym następujące liczby dziesiętne 16; 23; 61; 95
000100002 (1610)
001101112 (2310)
010100012 (8110)
+ 010111112 (9510)
-------
110101112 (21510)
Odejmowanie
Kod prosty liczby (KP)
Wprowadzamy pozycję znaku (po lewej stronie)
Zapis znaku:
L ≥ 0 to znak = 0
L ≤ 0 to znak = 1
Znak oddzielamy od liczby kropką
+1410 to 0.000011102
-1410 to 1.000011102
Kod uzupełnieniowy(KU) liczby
Kod uzupełnieniowy (dopełnieniowy) liczby która jest nie ujemna = kodowi prostemu (KP)
Kod uzupełnieniowy liczby ujemnej:
Przepisać znak bez zmian
zanegować wszystkie bity(zamieniamy 0 na 1 i 1 na 0)
dodać 1 do wyniku
Oto jak wyznaczyć dwójkową postać liczby - 1410:
1.000011102 -1410
1.111100012 negacja wszystkich bitów (znak pozostaje bez zmian)
+ 0.000000012 inkrementacja (dodajemy liczbę jeden)
----------
1.111100102
W identyczny sposób można zmienić na przeciwny, znak liczby ujemnej:
1.111100102 -1410
1.000011012 negacja wszystkich bitów
+ 0.000000012 inkrementacja
----------
0.000011102
System uzupełnienia dwójkowego jest korzystny z technicznego punktu widzenia. Z odejmowania można zrezygnować, zastępując je prostą negacją i dodawaniem, zaś dodawanie liczb dodatnich i ujemnych jest prowadzone w myśl jednolitych reguł. Działanie:
+7 - 7 można zastąpić działaniem +710 + (-710)
Przykład:
Wykonujemy działanie 810 - 1310
Na początku zapiszemy liczbę - 1310 używając kodu uzupełniającego:
1.000011012 -1310
1.111100102 negacja wszystkich bitów
+ 0.000000012 inkrementacja
---------
1.111100112
Następnie wykonujemy dodawanie liczby 810 + (-1310)
0.000010002 810
+ 1.111100112 -1310
---------
1.111110112
Jeżeli wynik jest ujemny (liczba 1 przed kropką) to należy go przenieść z kodu uzupełniającego na kod prosty wykonując następujące czynności:
Przepisać znak bez zmian
zanegować wszystkie bity(zamieniamy 0 na 1 i 1 na 0)
dodać 1 do wyniku
znak zostawiamy bez zmian
1.111110112 -510 K. uzupełniający
1.000001002 negacja wszystkich bitów
+ 0.000000012 inkrementacja
---------
1.000001012 -510 K. prosty
Jeżeli wynik jest ≥ 0 to KU = KP
Mnożenie
Mnożenie w systemie dwójkowym wykonuje się tak jak w systemie dziesiętnym, metodą mnożenia przez poszczególne cyfry mnożnika oraz sumowania otrzymanych w ten sposób cząstkowych iloczynów.
Ponieważ w liczbach dwójkowych występują jedynie cyfry 0 i 1, to przy mnożeniu występują tylko następujące przypadki:
0 • 0 = 0
0 • 1 = 0
1 • 0 = 0
1 • 1 = 1
Posługując się tymi regułami można pomnożyć dwie dowolne liczby dwójkowe.
Przykład
Wykonamy działanie 1410 • 1510 = 21010
1 1 1 02 Liczba 1410
• 1 1 1 12 Liczba 1510
---------------------
+ 1 1 1 0
1 1 1 0
1 1 1 0
1 1 1 0
---------------------
1 1 0 1 0 0 1 02 Liczba 21010
Sprawdzenie:
1•27+1•26+0•25+1•24+0•23+0•22+1•21+0•20 = 21010
Dzielenie
Dzielenie w systemie dwójkowym wykonuje się pisemnie tak jak w systemie dziesiętnym.
Przykład
Podziel liczbę 8510 przez 510 w systemie dwójkowym.
8510 → 10101012
510 → 1012
0 0 1 0 0 0 1
1 0 1 0 1 0 12 : 1 0 12
1 0 1
0 0 0 0 1 0 1
1 0 1
0 0 0
0 0 1 0 0 0 12 → 1710
Podziel 12610 przez 2110
12610 → 11111102
2110 → 101012
1 1 0
1 1 1 1 1 1 02 : 101 012
1 0 1 0 1
1 0 1 0 0
1 0 1 0 1
0 0 0 0 0 0 0
1102 → 610
Podziel 24610 przez 310
24610 → 111101102
310 → 000000112
8210 → 010100102
0 1 0 1 0 0 1 0
1 1 1 1 0 1 1 02 : 112
1 1
0 0 1 1 0 1 1 0
1 1
0 0 0 1 1 0
1 1
0 0 0
2