Data aktualizacji: 30 stycznia 2023

Wstęp do pozycyjnych systemów liczbowych

Podstawowe pojęcia w systemach liczbowych

System pozycyjny to sposób zapisu liczb opierający się na wielokrotnościach kolejnych potęg wybranej podstawy.

Podstawą może być dowolna wybrana liczba różna od 1 oraz 0. Jednak dla zachowania przejrzystości umownie korzysta się z liczb naturalnych.

Ciekawostka: teoretycznie można oprzeć system na podstawie 1, jednak jest to problematyczne - wartość zero reprezentowana jest wtedy przez kompletny brak jakichkolwiek znaków.

Wartość cyfry w tym systemie określa jej pozycja. Każda następna liczba jest zwielokrotniona przez podstawę systemu.

liczby binarne

Metodą zapisywania liczb w pewnym porządku są systemy pozycyjne.

Przykład:

Wartość liczby dziesiętnej można zapisać w systemie pozycyjnym, lub w postaci sum iloczynów:

427  =  4∙102 + 2∙101 + 7∙100

Schemat wygląda tak samo dla liczb o innych systemach, na przykład liczby o podstawie 2:

1101  =  1∙23 + 1∙22 + 0∙21 + 1∙20

Oznaczając x0, x1, x2, …, xn za kolejne cyfry przyjętej liczby (gdzie x0 oznacza cyfrę o najmniejszej znaczności, natomiast xn cyfrę o największej) oraz „p” za podstawę (na przykład 10) można zapisać wzór ogólny do przekształcenia naszej liczby na sumę iloczynów:

xn∙pn + x(n-1)∙p(n-1) + x(n-2)∙p(n-2) + … + x2∙p2 + x1∙p1 + x0∙p0

Na tym etapie można by słusznie zastanowić się – do czego może przydać się wyznaczanie sumy iloczynów?

Systemy liczbowe - Przeliczanie

Dowolny system na system dziesiątkowy:

Sumowanie iloczynów jest najprostszym sposobem, który można zapisać w programie, aby zamienić liczbę o dowolnym systemie na system dziesiątkowy. Za przykład niech posłuży prosty system binarny:

1011  =  1∙23 + 0∙22 + 1∙21 + 1∙20  =  1∙8 + 0∙4 + 1∙2 + 1∙1 = 8 + 2 + 1 = 11

System dziesiątkowy na dowolny system:

Konwersja liczby dziesiętnej na liczbę o dowolnej podstawie odbywa się poprzez wyznaczanie kolejnych reszt z dzielenia wybranej liczby w systemie dziesiętnym przez podstawę systemu do której konwertujemy naszą liczbę:

Przykład:

Za przykład niech posłuży konwersja liczby z systemu dziesiątkowego na system czwórkowy:

10 → 4

Dla liczby 31:

Konwersja „ręczna”:

systemy liczbowe

Przykład konwersji ręcznej.

Z powstałych reszt z dzielenia, budujemy naszą liczbę w systemie czwórkowym, patrząc na reszty od dołu:

31(10) = 133(4)

Konwersja dostosowania do działania komputera:

Przyjmijmy „dziel” za operator dzielenia całkowitego w programie.

Konwersja z systemu dziesiętnego na czwórkowy.

Zastosowanie dzielenia całkowitego w przykładowej konwersji z systemu dziesiętnego.

Algorytm kończy działanie, gdy następna dzielna jest równa 0.

Wynik to reszty czytane od ostatniej, do pierwszej.

Dowolny system na dowolny inny system:

Najprostszą metodą konwersji między systemami nie będącymi decymalnym, jest:

  1. Zamiana liczby na dziesiętną
  2. Konwersja liczby dziesiętnej na dowolny wybrany system

Zapis liczby ujemnej w systemie ZM

System zapisu ZM jest pewnym rozszerzeniem zwykłego zapisu naturalnego danej liczby na taki, zrozumiały dla komputera. Polega on na zarezerwowaniu bitu o największej znaczności, na bit znaku. Zapis wygląda następująco:

  • dla bitu znaku równego 1 – liczba jest ujemna
  • dla bitu znaku równego 0 – liczba jest dodatnia

Przykład:

1001(ZM) = -(0 ∙ 22 + 0 ∙ 21 + 1 ∙ 20) = -(0 + 0 + 1) = -1

0001(ZM) = 0 ∙ 22 + 0 ∙ 21 + 1 ∙ 20 = 0 + 0 + 1 = 1

Kody uzupełnień – U1, U2 oraz BIAS

Dotąd o zapisie liczb ujemnych powiedzieliśmy, że można go łatwo zapisać w systemie ZM. Jest to prosty w zrozumieniu system w którym ujemność oznaczana była przez zapis z bitem znaku.

Nie jest to jednak jedyny system zapisu, głównie z uwagi na problemy z operacjami arytmetycznymi lub brakiem możliwości zmiany zakresu kodowanych liczb na odpowiedniej ilości bitów.

System uzupełnień do 1 – U1

System uzupełnień U1 powstał z uwagi na problem przy wykonywaniu operacji arytmetycznych w komputerze, ponieważ system znak moduł powoduje pewne problemy w niektórych przypadkach.

Najbardziej znacząca cyfra w systemie U1ma wartość ujemną odpowiedniej potęgi + 1. Zapis liczby ujemnej w systemie U1 polega na zanegowaniu wszystkich bitów liczby dodatniej o takiej samej wartości bezwzględnej. Nazwa "uzupełnienia do jeden" bierze się stąd, że dodanie do siebie liczby oraz jej przeciwieństwa da nam liczbę zlożoną z samych jedynek.

Przykład:
1101(U1) = -1 ∙ 23 + 1 + 1 ∙ 22 + 0 ∙ 21 + 1 ∙ 20 = -7 + 4 + 1 = -2

Dzięki temu na 4 bitach jesteśmy w stanie zapisać liczby z zakresu [-7, 7]

System ten jednak nie jest doskonały – zauważ, że w U1 zachodzi pewna zależność:

1111(U1) = -1 ∙ 23 + 1 ∙ 22 + 1 ∙ 21 + 1 ∙ 20 = -7 + 4 + 2 + 1 = 0

0000(U1) = -0 ∙ 23 + 0 ∙ 22 + 0 ∙ 21 + 0 ∙ 20 = 0 + 0 + 0 + 0 = 0

Niepotrzebnie więc przeznaczamy dwa zapisy na liczby o wartości 0.

Wynika to ze sposobu obliczania wartości U1.

Aby temu zapobiec, powstał system uzupełnień do 2.

System uzupełnień do 2 – U2

System U2 jest podobnym systemem do U1, jednak okazuje się, że drobna modyfikacja pozwala znacznie uprościć jego działanie.

Podobnie jak w systemie U1, zapis liczby w systemie U2 polega na zarezerwowaniu bitu o największej znaczności na bit uzupełnień. Jego wartość jest ujemna. Aby zanegować liczbę w systemie u2, należy zanegować jej bity a następnie dodać jeden.

Przykład:

1101(U2) = -1 ∙ 23 + 1 ∙ 22 + 0 ∙ 21 + 1 ∙ 20 = -8 + 4 + 1 = -3

Dzięki temu na 4 bitach jesteśmy w stanie zapisać liczby z zakresu [-8, 7] (nie mamy podwójnego zera, stąd dodatkowa wartość).

System U2 jest najpowszechniej używanym systemem, ponieważ binarne implementacje operacji arytmetycznych na nim nie wymagają oddzielnych podzespołów do zajmowania się liczbami ujemnymi - wartości ujemne i dodatnie (z małymi wyjątkami) traktowane sa jednakowo.

Kod w zapisie BIAS – liczba z nadmiarem

Jeżeli stały zakres wartości liczb na danej ilości bitów nam nie odpowiada, to możemy „sięgnąć” po zapis z nadmiarem.

Przy zapisie z nadmiarem, aby dostać dowolny zakres (nie większy od zapisu w systemie naturalnym) wystarczy ustalić odpowiedni nadmiar i tak dla przykładu dla konkretnych BIAS na 4 bitach możemy zapisać liczby:

  • [-7, 8] – jeżeli BIAS =  7
  • [7, 22] – jeżeli BIAS = -7
  • [1, 16] – jeżeli BIAS = -1

Obliczenie wartości liczby z nadmiarem zachodzi w bardzo prosty sposób – wystarczy od wartości liczby odjąć nasz ustalony nadmiar.

Przykład:

1101(BIAS=7) = 1 ∙ 23 + 1 ∙ 22 + 0 ∙ 21 + 1 ∙ 20 – BIAS = 8 + 4 + 1 – 7 = 6

Po więcej informacji, zapraszamy do skorzystania z naszego kursu informatyki.

Jak oceniasz ten artykuł?

Przykro nam 🙁 , że ten wpis nie był dla Ciebie wystarczająco przydatny!

Będziemy wdzięczni jeżeli napiszesz co moglibyśmy poprawić.

Najnowsze wpisy

Jak sprawdzić komputer przed maturą z informatyki?

Przeczytaj >>

Czy warto zapisać dziecko na programowanie dla przedszkolaków?

Przeczytaj >>

Pierwszy krok ku karierze, czyli jaką wiedzę potrzebuję, aby zacząć pracę w IT jako programista?

Przeczytaj >>

Czy można zostać programistą bez studiów informatycznych?

Przeczytaj >>

Jak pomóc dziecku w nauce programowania? Poradnik dla rodziców

Przeczytaj >>

JESTEŚ AMBITNY?

Dołącz do nas jeszcze dziś i rozwijaj się w swojej ulubionej dziedzinie we współpracy z nauczycielami, którzy są autorami artykułów na naszym blogu!
POZNAJ OFERTĘ KUrSÓW
© Ambitni Szkoła Informatyki 011111100101(2) | jesteś niemal gotowy!
crossmenu