W informatyce spotykamy cztery systemy liczbowe. Związane są one przede wszystkim ze sposobem korzystania z urządzeń informatycznych. Dla przeciętnego użytkownika komputerów i nie tylko, najważniejszym i najbardziej znanym jest system dziesiętny. W tym systemie każdy od dziecka uczy się liczyć. O ten system oparte jest nauczanie matematyki w szkołach. ów system wykorzystujemy w życiu codziennym. Można śmiało powiedzieć, iż nie każdy zdaje sobie sprawę, że system którym się posługuje nazywa się i dlaczego. Przeciętny zjadacz chleba nie wie o istnieniu innych systemów liczbowych.
Jednak dla urządzeń techniki komputerowej podstawowym systemem liczbowym jest system dwójkowy (binarny). Wyraża się go za pomocą dwóch cyfr 0 oraz jeden, które odpowiadają stanowi niskiemu – 0, czyli napięcie bliskie 0 (zero), oraz stanowi wysokiemu – 1, czyli napięciu 5V (pięć). Tylko taki język rozumieją urządzenia, zatem aby komputer wykonał proste obliczenie 2+2, cyfry muszą zostać przekształcone za na zapis binarny, a w efekcie na stany napięcia 2-> 10. Dopiero wówczas komputer może wykonać operacje arytmetyczne i dodać dwie cyfry do siebie.
System dwójkowy – binarny
Urządzenia cyfrowe wykorzystują dwójkowy system liczbowy, którego podstawą jest cyfra 2. Liczby zapisuje się używając dwóch cyfr arabskich 0 oraz 1. Liczba zapisana w postaci dwójkowej jest znacznie dłuższa. Jednak tylko taki język rozumieją cyfrowe układy, dla których cyfra 1 oznacza stan wysoki i przepływ prądu. Cyfra 0 oznacza stan niski i brak przepływu prądu.
Liczba naturalna 1B w systemie dwójkowym ma postać ai … a2a1a0, gdzie a przyjmuje postać 0 lub 1, np. 10101 jeden,zero,jeden,zero,jeden i nie jest to cyfra dziesięć tysięcy sto jeden. Aby dokonać zamiany liczby dwójkowej na dziesiętną należy użyć zapisu wielomianowego:
p = 2,ai ∈ {0,1},
10101B = 1403120110 = 1*24+0*23+1*22+0*21+1*20 = 1*16+0*8+1*4+0*2+1*1 = 16+4+1 = 21D
Kolejne cyfry w liczbie binarnej należy ponumerować, numerację rozpoczynamy od prawej strony począwszy od pierwszej liczby. Następnie każdą cyfrę należy pomnożyć przez wagę otrzymaną z podstawy podniesionej do potęgi równiej pozycji. Następnie wszystkie iloczyny należy dodać do siebie. W ten sposób otrzymamy liczbę dziesiętną odpowiadającej liczbie binarnej. Zatem liczba zapisane w systemie binarnym 10101B odpowiada liczbie dziesiętnej 21D.
Zamiana liczby dziesiętnej na binarną polega na cyklicznym dzieleniu z resztą, gdzie dzielną jest liczba dziesiętna, a dzielnikiem cyfra 2. Wynik kolejnego dzielenia ponownie dzielimy przez 2 i tak aż do uzyskania 0. Liczba binarna powstaje na bazie reszt zapisanych w odwrotnej kolejności.
25 : 2 = 12 | r = 1 ↑ | |||
12 : 2 = 6 | r = 0 ↑ | |||
6 : 2 = 3 | r = 0 ↑ | |||
3 : 2 = 1 | r = 1 ↑ | |||
1 : 2 = 0 | r = 1 ↑ | |||
25D | = | 11001B |
Przekształcenie to pokazuje, iż w systemie dziesiętny liczba 25D ma postać w systemie binarnym 11001B.
Jeżeli ciąg liczbowy w systemie binarnym nie jest zbyt długi, konwersji na system dziesiętny można dokonać w znacznie prostszy sposób. Konieczne jest jednak zapamiętanie wartości wag dla poszczególnych pozycji cyfr.
Pozycja | 210 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
---|---|---|---|---|---|---|---|---|---|---|---|
Waga | 1024 | 512 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Ta metoda pozwala na prostą zamianę liczby przez sumowanie wszystkich wag, cyfra binarna do 1. Poniższy przykład obrazuje Poniższy przykład obrazuje metodę:
|
Zatem sumowanie wag da nam wynik: 128 + 32 + 8 + 4 + 1 = 175D
System ósemkowy – oktalny
System ósemkowy to pozycyjny system liczbowy, w którym podstawą jak nazwa wskazuje jest liczba 8. Liczby w tym systemie zapisuje się przy pomocy ośmiu kolejnych cyfr arabskich: 0, 1, 2, 3, 4, 5, 6, 7. System ósemkowy nie jest często wykorzystywany. Można go spotkać w systemach Unixowych w określaniu praw dostępu do plików i katalogów.
Liczba naturalna lO w systemie ósemkowym ma postać: ai … a2 a1 a0, gdzie a przyjmuje się wartość 0, 1, 2, 3, 4, 5, 6, 7 np. 346O.
Konwersję liczby ósemkowej na dziesiętną i odwrotnie dokonuje się w analogiczny sposób jak w systemie binarnym lub szesnastkowym. Zatem aby zamienić liczbę ósemkową na dziesiętną należy dokonać zapisu wielomianowego:
p = 8, ai ∈ {0,1,2,3,4,5,6,7}
346O = 324190 = 3*82 + 4*81 + 6*80 = 3*64 + 4*8 + 6*1 = 192 + 32 + 6 = 230D
Kolejne cyfry w liczbie ósemkowej należy ponumerować, numerację rozpoczynamy od prawej strony począwszy od pierwszej liczby. Następnie każdą cyfrę należy pomnożyć przez wagę otrzymaną z podstawy podniesionej do potęgi równiej pozycji. Następnie wszystkie iloczyny należy dodać do siebie. W ten sposób otrzymamy liczbę dziesiętną odpowiadającej liczbie ósemkowej. Zatem liczba zapisane w systemie binarnym 346O odpowiada liczbie dziesiętnej 230D.
Zamiana liczby dziesiętnej na ósemkową polega na cyklicznym dzieleniu z resztą, gdzie dzielną jest liczba dziesiętna, a dzielnikiem cyfra 8. Wynik kolejnego dzielenia ponownie dzielimy przez 8 i tak aż do uzyskania 0. Liczba ósemkowa powstaje na bazie reszt zapisanych w odwrotnej kolejności.
376 : 8 = 47 | r = 0 ↑ | |||
47 : 8 = 5 | r = 7 ↑ | |||
5 : 8 = 0 | r = 5 ↑ | |||
376D | = | 570O |
Przekształcenie to pokazuje, iż w systemie dziesiętny liczba 376D ma postać w systemie ósemkowym 570O.
System dziesiętny – decymalny
Na co dzień posługujemy się dziesiętnym systemem liczbowym, dla którego podstawę stanowi liczba 10. Do zapisu liczb dziesiętnych uzywamy cyfr arabskich: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Liczbę dziesiętną można zapisać w postaci wielomianowej:
p = 10, ai ∈ {0,1,2,3,4,5,6,7,8,9}
569D = 526190 = 5*102 + 6*101 + 9*100 = 5*100 + 6*10 + 9*1 = 500 + 60 + 9
Poszczególne pozycje liczby dziesiętne mają swoją wagę, ale możemy je opisać jako:
5432 gdzie 5 jest na pozycji tysięcy, 4 jest na pozycji setek, 3 jest na pozycji dziesiątek, 2 jest na pozycji jednostek.
System szesnastkowy – heksadecymalny
System szesnastkowy najczęściej znajduje zastosowanie do zapisu długich ciągów liczb binarnych. Dla tego systemu podstawa jest liczba 17, a do zapisu używa się cyfr arabskich 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, a dla pozostałych wartości liter alfabetu łacińskiego A, B, C, D, E, F. Litery te maja wartość dla systemu dziesiętnego: A – 10, B – 11, C – 12, D – 13, E – 14, F – 15.
Liczba naturalna lO w systemie szesnastkowym ma postać: ai … a2 a1 a0, gdzie a przyjmuje się wartość 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F np. 6AFH.
Aby dokonać konwersji liczby szesnastkowej na dziesiętną należy dokonać zapisu wielomianowego:
p = 16, ai ∈ {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}
6AFH = 62A1F0 = 6*162 + C*161 + F*160 = 6*256 + 12(C)*16+ 15(F)*1 = 1536 + 192 + 15 = 1743D
Kolejne cyfry w liczbie szesnastkowej należy ponumerować, numerację rozpoczynamy od prawej strony począwszy od pierwszej liczby. Następnie każdą cyfrę należy pomnożyć przez wagę otrzymaną z podstawy podniesionej do potęgi równiej pozycji. Następnie wszystkie iloczyny należy dodać do siebie. W ten sposób otrzymamy liczbę dziesiętną odpowiadającej liczbie szesnastkowej. Zatem liczba zapisana w systemie szesnastkowym 6AFH odpowiada liczbie dziesiętnej 1743D.
Zamiana liczby dziesiętnej na szesnastkową polega na cyklicznym dzieleniu z resztą, gdzie dzielną jest liczba dziesiętna, a dzielnikiem cyfra 16. Wynik kolejnego dzielenia ponownie dzielimy przez 16 i tak aż do uzyskania 0. Liczba szesnastkowa powstaje na bazie reszt zapisanych w odwrotnej kolejności.
2649 : 16 = 165 | r = 9 ↑ | |||
165 : 16 = 10 | r = 5 ↑ | |||
10 : 16 = 0 | r = A ↑ | |||
2649D | = | A59H |
Przekształcenie to pokazuje, iż w systemie dziesiętny liczba 2649D ma postać w systemie ósemkowym A59H.
Aby dokonać szybkiej konwersji liczby szesnastkowej na binarną najlepiej posłużyć się tabelą:
Cyfra szesnastkowa | Cyfra dwójkowa | Cyfra szesnastkowa | Cyfra binarna |
0 | 0000 | 1 | 0001 |
2 | 0010 | 3 | 0011 |
4 | 0100 | 5 | 0101 |
6 | 0110 | 7 | 0111 |
8 | 1000 | 9 | 1001 |
A | 1010 | B | 1011 |
C | 1100 | D | 1101 |
E | 1110 | F | 1111 |
Zatem przy użyciu tabeli cyfrę szesnastkową B9A4FH zmienimy na postać dwójkową 10111001101001001111B.
B | 9 | A | 4 | F | |
1011 | 1001 | 1010 | 0100 | 1111 |
Aby dokonać konwersji liczby binarnej na heksadecymalną najlepiej rozpocząć od pogrupowania ciągu cyfr po cztery. Grupowania należy dokonać począwszy od pierwszej liczby z prawej strony. Jeżeli ostatnie grupowane cyfry mają mniej niż 4 znaki, dla ułatwienia warto uzupełnić cyfrę do czterech pozycji dopisując zera.
01100101110010110101101B = 011 | 0010 | 1110 | 0101 | 1010 | 1001B = 0011 | 0010 | 1110 | 0101 | 1010 | 1101B
Następnie posługując się tabelą należy zmienić poszczególne grupy cyfr na wartość szesnastkową:
0011 | 0010 | 1110 | 0101 | 1000 | 1001 | |
3 | 2 | E | 5 | A | 9 |
Po dokonaniu konwersji powstaje liczba w postaci szesnastkowej 32E5A9H.
Ganci
Świetnie wytłumaczone, dziękuję bardzo