Przeliczanie systemów liczbowych!

Z racji reprezentacji liczb w pamięci komputerów za pomocą bitów, najbardziej naturalnym systemem w informatyce jest dwójkowy system liczbowy. Natomiast naturalny dla ludzi system dziesiętny został wprowadzony dopiero wraz z powstaniem języków programowania wyższego poziomu, których celem było jak największe ułatwienie w korzystaniu z komputerów. Ze względu na specyfikę architektury komputerów, gdzie często najszybszy dostęp jest do adresów parzystych, albo podzielnych przez 4, 8 czy 16, często używany jest szesnastkowy system liczbowy. Sprawdza się on szczególnie przy zapisie dużych liczb takich jak adresy pamięci, zakresy parametrów itp. System szesnastkowy często stosowany jest też na stronach WWW (HTML, CSS), gdzie służy do określania kolorów poszczególnych elementów wyświetlanej zawartości strony.

              System dwójkowy      -->    wartość podstawy: 2,  wartości: 0-1
              System ósemkowy      -->    wartość podstawy: 8,  wartości 0-7
              System dziesiętny    -->    wartość podstawy: 10, wartości 0-9
              System szesnastkowy  -->    wartość podstawy: 16, wartości 0-f


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 przyjmuje postać 0 lub 1, np. 10101 jeden,zero,jeden,zero,jeden i nie jest to cyfra dziesięć tysięcy sto jeden.   Zamiana liczby binarnej na dziesiętną: Liczba naturalna 1B w systemie dwójkowym ma postać ai … a2a1a0, gdzie przyjmuje postać 0 lub 1, np. 10101 jeden,zero,jeden,zero,jeden i nie jest to cyfra dziesięć tysięcy sto jeden. 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ć, co zaczynamy od prawej strony. Każdą następną cyfrę należy pomnożyć przez wagę otrzymaną z podstawy podniesionej do potęgi równiej pozycji. Następnie wszystkie iloczyny(wynik mnożenia) należy zsumować. W ten sposób otrzymamy liczbę dziesiętną odpowiadającą naszej liczbie binarnej.
  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 prosty sposób, do którego wykorzystamy warte zapamiętania potęgi:
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 bardzo prostą zamianę liczby przez sumowanie wszystkich wag, cyfra binarna do 1. Oto przykład:
128 64 32 16 8 4 2 1
1 0 1 0 1 1 0 1
128 32 8 4 1
Zatem suma 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. Konwersję liczby ósemkowej na dziesiętną i odwrotnie dokonuje się w analogiczny sposób jak w systemie binarnym lub szesnastkowym. 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

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. 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.   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
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.  

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *