Systemy liczbowe



Ludzie posługują się systemem dziesiętnym, natomiast komputery posługują się systemem dwójkowym. Dlaczego systemem dwójkowym ? A no dlatego, że urządzenia cyfrowe rozróżniają 2 stany:
  • stan wysoki czyli logiczna jedynka (3V),
  • stan niski czyli logiczne zero (0,5V).
Dlatego dla urządzeń cyfrowych takich jak komputery zastosowano system dwójkowy którego podstawą jest 1 i 0. Oczywiście można było by wprowadzić system dziesiętny i np. dla 1 dać 1V dla 2 dać 2V ale jest to kłopotliwe ponieważ na przykład trudno jest bez wahań, różnych zakłóceń zachować wartość co do 1V a po drugie powodowało by to niekompatybilności pomiędzy różnymi układami, ponieważ jedne układy pracują w zakresie do 3V a inne w zakresie do 15V dlatego najprościej jest po prostu rozpoznawać dwa stany- niski i wysoki. Oczywiście system dwójkowy i dziesiętny są kompatybilne, ponieważ można jeden przeliczyć na drugi i odwrotnie. Oprócz systemu dwójkowego i dziesiętnego wymyślono także inne systemu liczbowe, takie jak na przykład system ósemkowy albo szesnastkowy, jednak nie mają już one aż takiej ważnej roli tylko zostały one wprowadzone w głównej mierze w celu skróconej prezentacji liczb w systemie dziesiętnym czy binarnym (dwójkowym), na przykład adres IPv4 np. 168.192.0.1 przedstawiony w postaci binarnej miałby postać 10101000.11000000.00000000.00000001 natomiast w systemie szesnastkowym te zapisy miały by postać - A8.C0.0.1. Adres IPv4 jest adresem tylko 32 bitowym a co by było gdyby trzeba by było przedstawiać w systemie dziesiętnym adres o długości 128 butów jakim jest IPv6 ? No własnie dlatego na przykład taki adres zapisuje się w systemie szesnastkowym właśnie w celu skrócenia jego zapisu. Ale dość wstępu, omówmy sobie jak się poszczególne systemy konwertuje się na inne.


System dwójkowy

Zaczniemy od systemu dwójkowego zwanego binarnym, którego podstawą jest liczba 2, czyli składa się on z zer i jedynek. Przeliczanie na ten system jest dosyć proste przeliczymy liczbę 16710. Przedstawię wam najprostszy sposób przeliczania, na początku podzielmy pierwszą liczbę oraz kolejne wyniki przez 2. W Wynikach nie podajemy reszty z dzielenia.
167:2=83
83:2=41
41:2=20
20:2=10
10:2=5
5:2=2
2:2=1
Następnie jak już zapisaliśmy wyniki w słupku tak gdzie wyszła reszta piszemy 1 a tam gdzie się odbyło bez reszty to 0.
167:2=83  | reszty 1
83:2=41   | reszty 1
41:2=20   | reszty 1
20:2=10   | reszty 0
10:2=5    | reszty 0
5:2=2     | reszty 1
2:2=1     | reszty 0
1:2=0     | reszty 1
Wyniki odczytujemy od dołu czyli 167(10) w systemie binarnym będzie wynosiło - 10100111(2). Aby z powrotem przeliczyć system binarny na system dziesiętny należy każdą kolejną cyfrę (znowu odwracamy kolejność) pomnożyć przez rosnącą potęgę liczby 2.
1*20=1
1*21=2
1*22=4
0*23=0
0*24=0
1*25=32
0*26=0
1*27=128
Po zsumowaniu wyników da nam liczbę 167. Prawda, że proste ? :D


System ósemkowy

Drugim ważnym systemem jest system ósemkowy inaczej oktalny, jego podstawą jest liczba 8. Jak się domyślacie analogia przeliczania na ten system jest podobna do systemu binarnego. Aby przeliczyć system dziesiętny na ósemkowy należy dzielić kolejne liczby przez osiem. Przeliczmy jak wcześniej liczbę 167 i od razu przy wynikach zapisujmy resztę.
167:8=20 | reszta 7
20:8=2    | reszta 4
2:8=0      | reszta 2
I tutaj też jak w każdym systemie po przeliczeniu odczytujemy liczbę od dołu do da nam 2478 w systemie ósemkowym. Aby przeliczyć tą liczbę na system dziesiętny odwracamy ja z powrotem i każdą kolejną liczbę mnożymy przez rosnącą potęgę liczby 8.
7*80=7
4*81=32
2*82=128
Zatem po zsumowaniu liczba 2478 w systemie ósemkowym da nam liczbę 167 w systemie dziesiętnym.


System szesnastkowy

Po omówieniu dwóch wcześniejszych systemów pewnie nie ma sensu omawiać szesnastkowego bo analogia przeliczania w każdym z systemów jest taka sama, pierw się dzieli, wypisuje resztę a następnie od dołu się odczytuję a przeliczając w drugą stronę mnoży się przez rosnącą potęgę a następnie sumuje wyniki. Lecz jest jedno ale, pewnie się zastanawialiście jak w szesnastkowym zapisać np. liczbę 10 ? Przecież nie wiadomo czy była by to rzeczywiście liczba 10 czy po prostu 1 i 0 dlatego też wprowadzono oznaczenia literami:
  • 10=A
  • 11=B
  • 12=C
  • 13=D
  • 14=E
  • 15=F
Z systemu szesnastkowego zrobimy sobie także przykład z liczba 167.
167:16=10 | reszta 7
10:16=0  | reszta 10 (czyli litera A)
Wynik oczywiści odczytujemy od dołu co dam na A716 w systemie szesnastkowym inaczej heksadecymalnym. Aby przeliczyć ten system z powrotem na dziesiętny analogia przeliczania jest tak sama jak w pozostałym systemach czyli:
7*160=7
10*161=160
Po zsumowaniu da nam liczbę 16710.


Przeliczanie między różnymi systemami

Aby przeliczyć liczbę w systemie binarnym na oktalny lub heksadecymalny należy podzielić bity w takie grupy aby jak będą same jedynki, które podniesie się do kolejnych potęg liczby 2 nie dawały więcej niż maksymalna liczba w danym systemie. Aby to lepiej zoobrazować zróbmy dwa przykłady na liczbie 10100111. Pierw przeliczymy ją na system oktalny, w tym celu dzielimy liczbę binarną po 3 bity od prawej strony, co daje nam 10 100 111 i traktujemy je jako 3 osobne liczby, w których każdą cyfrę podnosimy do rosnącej potegi 2, coś w stylu jakbyśmy przeliczali je na liczby dziesiętne.Dlaczego po 3 bity ? Ponieważ gdy za te 3 bity podstawi się same jedynki i pomnoży przez rosnące potęgi liczby dwa i się zsumuje ywniki da to liczbę 7 która jest maksymalną liczbą w systemie ósemkowym. Przed przeliczeniem przestawiamy jeszcze cyfry od tyłu w każdej liczbie oraz także zmieniamy szyk tych liczb także od tyłu co da nam 111 001 01.
Pierwsza liczba - 111 po odwróceniu - 111
1*20= 1
1*21= 2
1*22= 4
Suma:7

Druga liczba - 100 po odwróceniu - 001
0*20= 1
0*21= 0
1*22= 4
Suma:4

Trzecia liczba - 10 po odwróceniu - 01
0*20= 0
1*21= 2
Suma:2
Wynik odczytujemy od dołu i otrzymujemy liczbę 2478 Gdy przeliczamy na system heksadecymalny dzielimy bity na grupki po 4 bity oraz także przestawiamy szyk liczb oraz kolejnośc cyfr w każdej liczbie co da nam przed odwróceniami 1010 0111 a po odwróceniach - 1110 0101.
Pierwsza liczba - 0111 po odwróceniu - 1110
1*20= 1
1*21= 2
1*22= 4
0*22= 0
Suma:7

Druga liczba - 1010 po odwróceniu - 0101
0*20= 0
1*21= 2
0*22= 0
1*22= 8
Suma:10 (czyli litera A)
Wynik odczytujemy od dołu do daje nam liczbę A7.

Autor: APTechnology Data: 2016-12-26