Informatyka

T: Systemy liczbowe.

12.09.2022

Najczęsciej używanym systemem liczbowych przez nas jest system dziesiątkowy. (decymalny)

Przykładem liczby decymalnej jest 2137 lub nie wiem, 4982482. W kontekście przeliczeń między różnymi systemami liczbowymi zapisujemy je 213710 i 498248210.

Aby przeliczyć liczbę decymalną na jakikolwiek system, musimy najpierw zamienić ją na system binarny. Jak? No, patrz jak to wygląda w dziesiątkowym. Każdy rząd to 10 do coraz to wyższej potęgi.

2 1 3 7
103 102 101 100
1000 100 10 1

No, rząd jedności, rząd dziesiątek, rząd setek etc.. wydaje mi się, że coś o tym było w podstawówce, więc raczej rozumiemy.

Teraz wystarczy zamienić 10 na coś innego. Najważniejsza jest zamiana na system dwójkowy (binarny), więc od tego zacznijmy.

213710 = ?2

211 210 29 28 27 26 25 24 23 22 21 20
2048 1024 512 256 128 64 32 16 8 4 2 1

Jak widać, w systemie dziesiętnym zamiast rzędów jednostek, dziesiątek.. (1, 10..) są rzędy jednostek, par, kwartetów.. ok, nie wydaje mi się, żeby miały jakieś oficjalne nazwy, ale NO, są 1, 2, 4, 8, 16 etc.

Teraz wystarczy jakoś zmieścić 2137 w ten system. Kuryłowicz pokazał nam 2 sposoby, jeden na chłopski rozum, drugi na mechaniczne obliczenia. Najpierw zobaczmy ten pierwszy, bo często zajmuje znacznie mniej czasu.

1 0 0 0 0 1 0 1 1 0 0 1
211 210 29 28 27 26 25 24 23 22 21 20
2048 1024 512 256 128 64 32 16 8 4 2 1
2137
-2048
89
-64
25
-16
9
-8
1
-1
89 89 89 89 89 25 25 9 1 1 0 1

213710 = 1000010110012

Odejmujemy od liczby10 największą potęgę 2 jaką można, potem kolejną największą jaką można, aż odejmiemy wszystko. Jeśli można odjąć, wpisujemy w tabelce '1'. Jeśli nie, '0'.

Bardziej mechaniczny sposób wygląda tak:

  2137:2|1
  1068:2|0
   534:2|0
   267:2|1
   133:2|1
    66:2|0
    33:2|1
    16:2|0
     8:2|0
     4:2|0
     2:2|0
     1:2|1

Liczbę decymalną dzielimy przez 2 i po prawej stronie kreski piszemy resztę (czyli boolean czy liczba jest nieparzysta), wynik dzielenia przenosimy niżej aż do końca. Liczba binarna wychodzi nam czytając prawą stronę od dołu w górę. Można sprawdzić, wyszło to samo co chłopskim rozumem.

Oprócz n10 i n2 spotkamy się na pewno z systemem szesnastkowym (heksadecymalnym) i ósemkowym (oktalnym).

Przeliczenie na te 2 systemy jest bardzo proste, o ile masz już wynik w systemie binarnym.

Dla systemu oktalnego bierzemy po 3 cyfry z liczby binarnej i przeliczamy te podzielone kawałki na system dziesiętny.

100|001|011|001

4 1 3 1
1002 0012 0112 0012

213710 = 1000010110012 = 41348

Najwyższą cyfrą w systemie zawsze jest liczba mniejsza o 1 niż jej nazwa. W dziesiętnym mamy 0-9, w dwójkowym 0-1, w oktalnym 0-7.

Aby przeliczyć na szesnastkowy, robimy to samo, ale bierzemy po 4 cyfry.

1000|0101|1001

8 5 9
10002 01012 10012

213710 = 1000010110012 = 41348 = 85916

Można też stosować zapisu pochodnego od łacińskich nazw tych systemów zamiast liczb.

2137D = 100001011001B = 4134O = 859H

Jeszcze jeden malutki przykład by zademonstrować specyfikę systemu heksadecymalnego.

10 2 15
10102 00102 11112

....i jak tu to teraz zapisać? 1010001011112 = 1021516? No, nie. (10)2(15) też nie. W systemie szesnastkowym po cyfrze 9 zaczynają się litery.

1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Proste.

1010001011112 = A2F16

Systemu binarnego używa się, wiadomo. Wszędzie w komputerach, choć zwykle za kulisami.

Systemu heksadecymalnego używa się np w hex code'ach, czyli kolorach zapisanych w stylu #000000, #fdb4e6.

Oktalnego tbh nwm sam se wyszukaj eluwinka