Systemy liczenia

 

System Karbowy

obrazek
Kości z karbami z przed 30.000 lat p.n.e.

Potrzeba liczenia pojawiła się wraz z posiadaniem przedmiotów. Człowiek pierwotny nie odczuwał jej. Jako myśliwy nie mógł posiadać zbyt wiele. Rzeczy należało przenosić, więc jeśli czegoś było za dużo, po prostu pozostawiano to w miejscu obozowania. Duża liczba przedmiotów spowalniała myśliwego, więc malały jego szanse na zdobycie pożywienia, a mógł również przez to sam stać się ofiarą. Jednak pewien prosty system liczenia pojawił się około 30.000 lat p.n.e. Był to system karbowy. Polegał on na żłobieniu w kościach karbów, których ilość oznaczała określoną liczbę. System ten stosowany jest w ograniczonej formie do dnia dzisiejszego, więc można go nazwać najdłużej używanym wynalazkiem człowieka.


Początkowo dla wyrażenia jednostek stosowano pojedyncze kreski. Np. liczbę 18 zapisywano tak:

\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \

Jednak zapis ten jest mało czytelny - porównaj go z zapisem np. liczby 17 czy 19. Można się pomylić? Oczywiście. Aby więc zwiększyć czytelność zapisu liczb co piątą kreskę stawiano pod innym katem od pozostałych. Teraz liczbę 18 zapisywano tak:

\ \ \ \/ \ \ \ \/ \ \ \ \/ \ \ \

Ilość kresek (karbów) jest taka sama, ale dzięki zaburzeniom łatwiej jest się zorientować w wartości liczby - są to trzy pełne piątki i trzy jednostki. Człowiek pierwotny, jeśli miał nazwy dla liczb, mógł to przeczytać jako trzy razy po pięć i trzy. Jeśli w liczbie tak zapisanej występowało dużo piątek, to co drugą piątkę zapisywano jeszcze inaczej, mianowicie tak:

\ \ \ \/ \ \ \ X \ \ \ \/ \ \ \

 

System Rzymski

System karbowy wyewoluował w znany nam dzisiaj system rzymski. Rzymianie, jako ludzie praktyczni, uprościli zapis karbowy odrzucając niepotrzebne kreski po lewej stronie. W efekcie zapis liczby 18 wyglądał teraz tak:

XVIII

Pięknie - Rzymianie też byli z tego zadowoleni. Idąc za ciosem wymyślili dalsze reguły. Reguły te możemy zapisać następująco:

  1. Liczby zapisujemy jako sumę cyfr o następujących wartościach:
Cyfra wartość
I jeden
V pięć
X dziesięć
L pięćdziesiąt
C sto od łacińskiego "centum"
D pięćset
M tysiąc od łacińskiego "milum"

 

  1. Cyfry wypisujemy od strony lewej do prawej poczynając od największej.

Teraz można już zapisywać w zgrabny sposób różne liczby:

12  -  XII
29   -  XXVIIII
1999  -  MDCCCCLXXXXVIIII

 

  1. Jeśli przed cyfrą starszą stoi cyfra młodsza, to należy ją odjąć od starszej.

Rzymianom nie podobało się, iż muszą zapisywać liczbę 4 jako IIII, liczbę 9 jako VIIII itd. Wprowadzili więc pozorne uproszczenie systemu, czyli regułę 3. Teraz prościej można przedstawiać powyższe liczby:

4  -  IV
9   -  IX
1999  -  MCMXCIX


O ile przedtem dodawanie można było wykonywać przez wspólne zapisanie cyfr obu dodawanych liczb, a następnie zastąpienie cyfr niższych wyższymi:

MMCCCXXVI + MDCCXXVII = MMMDCCCCCXXXXVVIII = MMMDDXXXXXIII = MMMMLIII


to po zastosowaniu reguły 3 należało szalenie uważać, aby nie popełnić pomyłki. W rezultacie uproszczenie zapisu spowodowało skomplikowanie rachunków.

 

  1. Jeśli nad cyfrą umieszczono kreskę, to cyfra ta oznaczała liczbę tysięcy.

Reguła ta pozwala zapisywać względnie duże liczby bez konieczności pisania wielu cyfr M. Na przykład liczbę 36.984 rzymski rachmistrz zapisywał następująco:

XXXVICMLXXXIV

Zgrabnie, nieprawdaż? Rzymianie byli naprawdę bardzo dumni ze swojego systemu zapisu liczb. Przetrwał on w ograniczonej formie nawet do dzisiaj przy zapisie dat lub numeracji rozdziałów, klas, sal, pięter, godzin itp. Jednak pomimo tych usprawnień system rzymski był ograniczony. Jak bowiem zapisać w tym systemie na przykład taką liczbę:

 

9426164130947320732385384038740846725325161632379864930747364030384752621 ?

 

System Babiloński

Cywilizacja babilońska rozkwitła w Mezopotamii wypierając wcześniejsze cywilizacje Sumerów i Akadyjczyków. Piętno Babilonu odcisnęło się na wielu cywilizacjach świata starożytnego, a jego echo jest obecne nawet w naszej kulturze współczesnej. Babilończycy rozwinęli jako pierwsi system pozycyjny o podstawie 60 (do dzisiaj dzielimy godziny na sześćdziesiąt minut, minuty na sześćdziesiąt sekund - czy kiedykolwiek zastanawiałeś się dlaczego?). Cechą systemu pozycyjnego jest ograniczona ilość cyfr. Te same cyfry są używane wielokrotnie w zapisie liczby. Wartość cyfry zależy od jej pozycji - stąd nazwa system pozycyjny.

Z naszego punktu widzenia system babiloński na pierwszy rzut oka może wydawać się skomplikowany - konieczność operowania aż 59 cyframi (cyfra zero nie była jeszcze znana ani stosowana). W rzeczywistości Babilończycy potrzebowali tylko dwóch symboli - dla jedności i dla dziesiątek. Ich cyfry były zbudowane właśnie z tych dwóch znaków zapisywanych końcem ostrej trzcinki na tabliczce glinianej, stąd pochodzi charakterystyczny, klinowy kształt pisma:

 

obrazek
Cyfry systemu babilońskiego zbudowane ze znaku jednostek i dziesiątek


Wartość liczby w systemie pozycyjnym obliczamy mnożąc kolejne cyfry przez wagi pozycji, na których stoją i sumując te iloczyny. Wagi pozycji są kolejnymi potęgami podstawy systemu liczenia. Np. w dobrze nam znanym systemie dziesiętnym (o podstawie 10) wartość liczby 26549 obliczymy następująco:

2 × 104 + 6 × 103 + 5 × 102 + 4 × 101 + 9 × 100

W systemie babilońskim podstawa wynosi 60, więc cyfry będą mnożone przez kolejne potęgi liczby 60. Aby lepiej to zrozumieć, rozważmy następujący przykład liczby babilońskiej:

obrazek

Poszczególne cyfry tej liczby to (patrz tabelka) 3, 25 i 57. Pytanie brzmi: jaką liczbę przedstawia ten zapis babiloński. Zgodnie z tym, co powiedzieliśmy o obliczaniu wartości liczby w systemie pozycyjnym, możemy zapisać:

3 × 602 + 25 × 601 + 57 × 600 = 3 × 3600 + 25 × 60 + 57 × 1 = 10800 + 1500 + 57 = 12357

Zwróćcie uwagę, iż system babiloński jest lepszy od rzymskiego, ponieważ przy pomocy ograniczonej liczby symboli pozwala zapisywać dowolnie duże wartości. Problem sprawia tylko brak cyfry na określonej pozycji. Babilończycy nie znali cyfry 0 (pojawiła się ona dużo później, ale zobacz na system Majów). Zamiast zera pozostawiali na danej pozycji puste miejsce (co było zgodne z intuicją - 0 oznacza brak czegokolwiek). Problem pojawiał się wtedy, gdy obok siebie było kilka takich pustych miejsc (jeśli skryba zrobił zbyt duże lub zbyt małe odstępy, to liczbę można było błędnie odczytać). Jednak w rachunkach starożytności nie operowano olbrzymimi wartościami, więc puste miejsca obok siebie w zapisie babilońskim były raczej rzadkością. W późniejszym okresie zaczęto takie puste miejsca zaznaczać małą, pionową kreseczką umieszczoną u góry.

 

System Majów

obrazek
Liczebniki Majów

 

Starożytni Majowie jako pierwsi na Ziemi odkryli dwie fundamentalne dla matematyki idee - system pozycyjny oraz koncepcję zera. Wynalezienie systemu pozycyjnego przypisuje się kulturze hinduskiej, lecz z badań historycznych wynika jasno, iż Majowie znali i stosowali system pozycyjny przynajmniej 300 lat wcześniej niż Hindusi.

Podstawą systemu liczbowego Majów była liczba 20. Dlaczego? Możemy się jedynie domyślać. Otóż w ciepłym klimacie Ameryki Majowie nie mieli potrzeby noszenia obuwia. Każdy człowiek posiada dwadzieścia palców - dziesięć u rąk i dziesięć u nóg. Prawdopodobnie ta własność naszego ciała wpłynęła na wybór podstawy systemu liczenia.

Do zapisu cyfr Majowie używali tylko trzech symboli (podobnie jak Babilończycy). Znak kropki oznaczał jednostkę. Pozioma kreska oznaczała piątkę (tyle mamy palców u ręki). Muszla oznaczała zero. Obok można zobaczyć w tabelce, jak wyglądały kolejne liczebniki Majów. Wartość liczby w tym systemie obliczamy mnożąc cyfry przez kolejne potęgi podstawy, czyli 20, i sumując te iloczyny częściowe.


Przykład

obrazek
obrazek
obrazek
?

 

Pierwszą czynnością będzie zidentyfikowanie poszczególnych cyfr. Cyfry Majów były zapisywane od góry na dół. Spotyka się również zapis poziomy, ale wtedy cyfry są obrócone o 90 stopni. Porównując zapis liczby z tabelką odszukamy odpowiednie cyfry (można je też prosto obliczyć według podanych wcześniej reguł):

(2 5 5) = 12,    (2 5) = 7,    (4 5 5 5) = 19.

Teraz, znając podstawę systemu Majów, możemy przystąpić do obliczeń:

 

12 × 202 + 7 × 201 + 19 × 200 = 12 × 400 + 7 × 20 + 19 = 4800 + 140 + 19 = 4959

Zwróćmy uwagę, iż system Majów nie ma żadnego ograniczenia co do wielkości zapisywanych liczb. Przewyższa on więc systemy rzymski, egipski oraz grecki. Kultury antyczne, pomimo posiadania wybitnych matematyków, nie odkryły idei systemu pozycyjnego. Zrobili to Majowie.

Kształt cyfr Majów sugeruje, iż stosowali oni do obliczeń prostą wersję liczydła, gdzie kamyczki (kropki) oznaczały jednostki, a patyczki (kreski) piątki. Sumowanie polegało na odpowiednim dodawaniu poszczególnych symboli (kropek - kamyków, kresek - patyczków), a następnie zastępowaniu ich symbolami wyższymi. Gdy ilość jednostek (kamyk) osiągnęła wartość 5, to zastępowano ją kreseczką (patyczek). Jeśli ilość piątek wyniosła 4 (=20), to patyczki zastępowano muszlą, a do następnej pozycji dodawano kamyczek.

 

System Arabski

System zapisu liczb, którym posługujemy się dzisiaj, nosi nazwę systemu arabskiego. Nazwa sugeruje, iż został on wynaleziony przez Arabów. Tymczasem prawda jest inna. Arabowie przejęli i rozpowszechnili ten system od Hindusów. To uczonym bramińskim przysługuje palma pierwszeństwa w opracowaniu zapisu pozycyjnego. Pierre-Simon Laplace (1749-1827), wielki matematyk francuski, napisał kiedyś następujące słowa:

 

Genialna metoda wyrażania każdej możliwej liczby przy użyciu zbioru dziesięciu symboli (z których każdy posiada wagę pozycji oraz wartość bezwzględną) powstała w Indiach. Dzisiaj pomysł ten wydaje się tak prostym, iż jego znaczenie i istota nie są już doceniane. Prostota tego pomysłu leży w sposobie, w jaki ułatwia on wykonywanie obliczeń, co umieściło arytmetykę na czele użytecznych wynalazków, a znaczenie tego wynalazku może być bardziej docenione, gdy zdamy sobie sprawę, iż dokonał on się poza dwoma największymi umysłami starożytności, Archimedesem i Apoloniuszem.

 

Istota systemu jest podobna do systemu babilońskiego i Majów - stosujemy ograniczoną ilość cyfr, wartość cyfry zależy od pozycji w zapisie. W systemie arabskim kolejne pozycje licząc od strony prawej posiadają wartości (wagi) będące potęgami liczby 10, którą z tego powodu nazywamy podstawą systemu. Wartość liczby otrzymujemy sumując iloczyny cyfr przez wagi pozycji, na których występują.

Przykład

wagi 103 102 101 100 = 6 × 103 + 3 × 102 + 2 × 101 + 7 × 100
cyfry 6 3 2 7

 

Ważną własnością systemu arabskiego jest cyfra 0. Z początku oznaczała ona jedynie, iż dana pozycja dziesiętna nie jest obsadzona - czyli brak cyfry właściwej. Później jednak zaczęto stosować ją w charakterze wartości 0, co znacznie posunęło do przodu całą naszą matematykę, w której pojęcie zera jest pojęciem kluczowym.

 

System dziesiętny

W rozdziale opiszemy pozycyjne systemy liczbowe. Wiedza ta znakomicie ułatwi nam zrozumienie sposobu przechowywania liczb w pamięci komputerów. Na pierwszy ogień pójdzie system dziesiętny. Dlaczego? Po prostu jest on nam najbardziej znany.

Podstawę systemu dziesiętnego tworzy liczba 10. Jest to specjalna wartość charakteryzująca system pozycyjny, od której bierze on swoją nazwę: podstawa 10 - system dziesiętny.

Zapis liczby tworzymy za pomocą cyfr, czyli umownych znaków o przypisanych wartościach od 0 do 9. Ilość cyfr jest zawsze równa podstawie systemu, czyli w systemie dziesiętnym będzie ich dziesięć. Największa cyfra jest o 1 mniejsza od podstawy (9 = 10 - 1).

Cyfry umieszczamy na kolejnych pozycjach. Każda pozycja posiada swoją wartość, którą nazywamy wagą pozycji. Wagi pozycji są kolejnymi potęgami podstawy systemu, czyli w systemie dziesiętnym są to kolejne potęgi liczby 10:

 

wagi 1000
103
100
102
10
101
1
100
cyfry 7 5 8 2
pozycje 3 2 1 0

 

Cyfra na danej pozycji określa ile razy należy wziąć wagę tej pozycji przy wyznaczaniu wartości całej liczby. Zatem w naszym przykładzie waga 1000 występuje 7 razy, waga 100 - 5 razy, waga 10 - 8 razy i waga 1 - 2 razy. Wartość liczby otrzymujemy sumując iloczyny cyfr przez wagi pozycji, na których cyfry te występują (czyli ilości tych wag):

 

7 × 1000 + 5 × 100 + 8 × 10 + 2 × 1

 

Jeśli pozycje ponumerujemy kolejno od 0 poczynając od prawej strony zapisu liczby, to waga pozycji i-tej będzie i-tą potęgą podstawy systemu. Np. pozycja nr 3 ma wagę 103, czyli 1000, a pozycja nr 2 ma wagę 102, czyli 100.

 

Zapamiętaj:

Zbiór podstawowych cech dowolnego systemu pozycyjnego o podstawie p

  1. System pozycyjny charakteryzuje liczba zwana podstawą systemu pozycyjnego.
  2. Do zapisu liczby służą cyfry.
  3. Cyfr jest zawsze tyle, ile wynosi podstawa systemu: 0,1,2,...,(p-1)
  4. Cyfry ustawiamy na kolejnych pozycjach.
  5. Pozycje numerujemy od 0 poczynając od strony prawej zapisu.
  6. Każda pozycja posiada swoją wagę.
  7. Waga jest równa podstawie systemu podniesionej do potęgi o wartości numeru pozycji.
  8. Cyfry określają ile razy waga danej pozycji uczestniczy w wartości liczby
  9. Wartość liczby obliczamy sumując iloczyny cyfr przez wagi ich pozycji

 

Podane powyżej zasady obowiązują w każdym systemie pozycyjnym.

 

Inne systemy pozycyjne

Z matematycznego punktu widzenia system dziesiętny nie jest wyróżnionym systemem zapisu liczb. Stosowany jest zapewne z uwagi na posiadanie dziesięciu palców, które w początkowym etapie nauki pełnią rolę swoistego komputera. Z drugiej strony dzieci uczą się liczb zapisywanych właśnie w tym systemie, dlatego zwykle pod pojęciem liczby rozumiemy jej zapis dziesiętny.

Aby zrozumieć inne systemy pozycyjne należy przyjąć do wiadomości, iż wartość liczby jest niezależna od sposobu jej zapisu. Dla przykładu weźmy pojęcie DOM, które w języku niemieckim zapisuje się DAS HAUS, w angielskim THE HOUSE, a w hiszpańskim LA CASA. Zapis za każdym razem jest inny, lecz znaczenie ma to samo. Przyjmijmy do wiadomości, iż inne systemy pozycyjne, to jakby inne języki, w których daną liczbę wyraża się inaczej niż w naszym systemie dziesiętnym, ale wartość liczby pozostaje taka sama.

Podane w poprzednim rozdziale zasady obowiązują w każdym systemie pozycyjnym o dowolnej podstawie. Jeśli je zrozumiesz, systemy pozycyjne przestaną być dla ciebie tajemnicą.

Oto charakterystyka dowolnego systemu pozycyjnego:

Niech podstawą będzie liczba naturalna p większa od 1 (dla p = 1 system pozycyjny degraduje się do systemu karbowego).

System posiada p cyfr: 0,1,2, ..., (p - 1). Ostatnia cyfra jest zawsze o 1 mniejsza niż podstawa p.

Kolejne wagi pozycji będą przyjmowały wartość kolejnych potęg podstawy systemu:

 

pozycja 0 - p0
pozycja 1 - p1
pozycja 2 - p2, itd.

 

Wynika stąd prosty wniosek, iż waga każdej następnej pozycji jest p-razy większa od wagi poprzedniej pozycji.

 

Przykład:

 

Wagi 4 pozycji w różnych systemach liczbowych
Podstawa
p
Wartości wag pozycji
pozycja 4 pozycja 3 pozycja 2 pozycja 1 pozycja 0
2 24 = 16 23 = 8 22 = 4 21 = 2 20 = 1
3 34 = 81 33 = 27 32 = 9 31 = 3 30 = 1
4 44 = 256 43 = 64 42 = 16 41 = 4 40 = 1
5 54 = 625 53 = 125 52 = 25 51 = 5 50 = 1
6 64 = 1296 63 = 216 62 = 36 61 = 6 60 = 1
7 74 = 2401 73 = 343 72 = 49 71 = 7 70 = 1
8 84 = 4096 83 = 512 82 = 64 81 = 8 80 = 1
9 94 = 6561 93 = 729 92 = 81 91 = 9 90 = 1
10 104 = 10000 103 = 1000 102 = 100 101 = 10 100 = 1

 

Zwróć uwagę na ostatnią kolumnę. Wynika z niej, iż waga ostatniej pozycji w każdym systemie pozycyjnym jest taka sama i określa liczbę jednostek.

Wartość liczby obliczamy sumując iloczyny cyfr przez wagi ich pozycji. Stąd otrzymujemy wzór na wartość liczby w dowolnym systemie pozycyjnym.

 

Zapamiętaj:

Wartość dziesiętna liczby zapisanej w systemie pozycyjnym o podstawie p za pomocą ciągu cyfr

 

Cn-1Cn-2...C2C1C0 wynosi Cn-1 pn-1 + Cn-2 pn-2 + ... + C2 p2 + C1 p1 + C0 p0

 

gdzie:

C - cyfra danego systemu o podstawie p
Ci - cyfra na i-tej pozycji, i = 0,1,2,...,n-1
n - ilość cyfr w zapisie liczby
p - podstawa systemu pozycyjnego

 

Ponieważ z doświadczenia wiem, iż uczniowie nie bardzo rozumieją ten prosty wzór, podaję krok po kroku metodę obliczania wartości liczby zapisanej w dowolnym systemie pozycyjnym.

 

Przykład:

Obliczyć wartość dziesiętną liczby szóstkowej 53214(6).

  1. Ponad cyframi wypisujemy wagi pozycji, pamiętając, iż pozycje numerujemy od 0 z prawa na lewo. Wagi są kolejnymi potęgami podstawy systemu. Waga danej pozycji jest zawsze równa podstawie podniesionej do potęgi o wartości numeru pozycji.
wartość wagi 64 63 62 61 60
wartość cyfry 5  3  2  1  4 
numer pozycji  4 3 2 1 0

 

  1. Tworzymy sumę iloczynów cyfr przez wagi ich pozycji
wartość wagi 64 63 62 61 60  
wartość cyfry 5  3  2  1  4  = 5 × 64 + 3 × 63 + 2 × 62 + 1 × 61 + 4 × 60
numer pozycji  4 3 2 1 0  

 

  1. Wyliczamy wagi kolejnych pozycji
wartość wagi 64 63 62 61 60  
wartość cyfry 5  3  2  1  4  = 5 × 1296 + 3 × 216 + 2 × 36 + 1 × 6 + 4 × 1
numer pozycji  4 3 2 1 0  

 

  1. Obliczamy iloczyny cyfr przez wagi pozycji
wartość wagi 64 63 62 61 60  
wartość cyfry 5  3  2  1  4  = 6480 + 648 + 72 + 6 + 4
numer pozycji  4 3 2 1 0  

 

  1. Sumujemy iloczyny i otrzymujemy wartość liczby
wartość wagi 64 63 62 61 60  
wartość cyfry 5  3  2  1  4  = 7210
numer pozycji  4 3 2 1 0  

 

I ostatecznie piszemy 53214(6) = 7210(10). Jeśli operujemy liczbami zapisanymi w różnych systemach pozycyjnych, to w celu uniknięcia niejednoznaczności liczbę opatrujemy indeksem dolnym, w którym umieszczamy wartość podstawy systemu zapisu danej liczby. Powyższa równość oznacza, iż zapis szóstkowy i dziesiętny oznacza tę samą liczbę.

Obliczanie wartości liczby zapisanej
w systemie pozycyjnym o podstawie p

(C)2005 mgr Jerzy Wałaszek   I LO w Tarnowie
podstawa (2...10) =
liczba =

...

Wartość liczby w naturalnym kodzie dwójkowym

Naturalny system dwójkowy (ang. NBS - Natural Binary System) jest najprostszym systemem pozycyjnym, w którym podstawa p = 2. System posiada dwie cyfry 0 i 1, zatem można je kodować bezpośrednio jednym bitem informacji. Wartość liczby obliczamy zgodnie ze wzorem podanym w rozdziale o systemach pozycyjnych.

 

Zapamiętaj:

Wartość dziesiętna liczby zapisanej w naturalnym kodzie binarnym

 

bn-1bn-2...b2b1b0 = bn-12n-1 + bn-22n-2 + ... + b222 + b121 + b020

gdzie

b - bit, cyfra dwójkowa 0 lub 1
n - liczba bitów w zapisie liczby

 

Przykład:

Obliczyć wartość liczby dwójkowej 11100101(2).

 

11100101(2) = 1 × 27 + 1 × 26 + 1 × 25 + 0 × 24 + 0 × 23 + 1 × 22 + 0 × 21 + 1 × 20
11100101(2) = 1 × 128 + 1 × 64 + 1 × 32 + 0 × 16 + 0 × 8 + 1 × 4 + 0 × 2 + 1 × 1
11100101(2) = 128 + 64 + 32 + 4 + 1
11100101(2) = 229(10)

 

Jeśli dokładnie przyjrzysz się powyższym obliczeniom, to na pewno zauważysz, iż w systemie binarnym w celu obliczenia wartości liczby wystarczy po prostu zsumować wagi pozycji, na których cyfry przyjmują wartość 1.

 

Przykład:

101011(2) = 25 + 23 + 21 + 20 = 32 + 8 + 2 + 1 = 43(10)

 

Jest to znaczne uproszczenie w stosunku do innych systemów, gdzie musimy wykonywać mnożenia cyfr przez wagi pozycji. Tutaj albo dana waga występuje w wartości liczby (cyfra 1), albo nie występuje (cyfra 0). Nie na darmo system binarny jest najprostszym systemem pozycyjnym.

Bardzo ważne dla informatyka i programisty jest nauczenie się na pamięć pierwszych szesnastu liczb binarnych:

 

dziesiętnie 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
dwójkowo 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111

 

Zakres liczby dwójkowej

Określmy, jaką największą liczbę dwójkową możemy zapisać za pomocą n bitów (czyli cyfr binarnych). Największa liczba musi posiadać same cyfry 1, czyli w wartości liczby muszą uczestniczyć wszystkie wagi pozycji. Zatem:

 

dla 1b mamy  1(2)  = 1(10)
dla 2b mamy  11(2)  = 2 + 1 = 3(10)
dla 3b mamy 111(2)  = 4 + 2 + 1 = 7(10)
dla 4b mamy 1111(2)  = 8 + 4 + 2 + 1 = 15(10)
...    

 

Otrzymujemy kolejne liczby:

 

dla 1b mamy
dla 2b mamy
dla 3b mamy
dla 4b mamy
...
1
3
7
15

 

Liczby te tworzą prosty ciąg potęgowy:

 

dla 1b mamy  = 21 - 1
dla 2b mamy = 22 - 1
dla 3b mamy = 23 - 1
dla 4b mamy 15  = 24 - 1
...    

 

Wykładnik potęgowy liczby 2 jest równy ilości bitów, zatem dla n bitów otrzymujemy wzór:

 

Zapamiętaj:

Zakres n bitowej liczby w naturalnym kodzie dwójkowym wynosi

Z(2) = 0 ... 2n - 1

 

Przykład:

Jaką największą liczbę dziesiętną można przedstawić przy pomocy 64 bitów?

Odp.

264 - 1 = 18446744073709551616 - 1 = 18446744073709551615

 

Schemat Hornera dla liczb dwójkowych

Schemat Hornera pozwala obliczyć wartość liczby binarnej przy minimalnej ilości operacji arytmetycznych. W systemie binarnym schemat ten jest bardzo prosty:

 

Schemat Hornera dla systemu binarnego
Wejście: ciąg cyfr binarnych
Wyjście: W - wartość liczby reprezentowanej przez ciąg cyfr binarnych

 

K01: W obrazek pierwsza cyfra
K02: Dopóki są kolejne cyfry, wykonuj W ← 2 × W + kolejna cyfra
K03: Zakończ

 

Operację mnożenia 2 × W możemy zastąpić dodawaniem W + W. Dodawanie komputer wykonuje o wiele szybciej od mnożenia (jeszcze szybszą operacją jest przesunięcie bitów o jedną pozycję w lewo - taką operację wykonuje pojedynczy rozkaz procesora i jest ona szybsza od dodawania!)..

 

Przykład:

Obliczyć schematem Hornera wartość liczby binarnej 111010111101(2)

 

cyfra 1: W = 1
cyfra 1: W = (1 + 1) + 1 = 3
cyfra 1: W = (3 + 3) + 1 = 7
cyfra 0: W = (7 + 7) + 0 = 14
cyfra 1: W = (14 + 14) + 1 = 29
cyfra 0: W = (29 + 29) + 0 = 58
cyfra 1: W = (58 + 58) + 1 = 117
cyfra 1: W = (117 + 117) + 1 = 235
cyfra 1: W = (235 + 235) + 1 = 471
cyfra 1: W = (471 + 471) + 1 = 943
cyfra 0: W = (943 + 943) + 0 = 1886
cyfra 1: W = (1886 + 1886) + 1 = 3773 - koniec

 

Przeliczanie liczb dziesiętnych na dwójkowe

Kolejne od końca cyfry binarne zapisu liczby w systemie dwójkowym otrzymamy jako reszty z dzielenia tej liczby przez 2. Metoda ta została dokładnie opisana w rozdziale poświęconym przeliczaniu liczb dziesiętnych na zapis w innych systemach liczbowych.

 

Algorytm wyznaczania cyfr zapisu dwójkowego liczby
Wejście: W - wartość liczby
Wyjście: ciąg cyfr binarnych reprezentujących w systemie dwójkowym wartość W

 

K01: kolejna cyfra ← W mod 2, W ← W div 2
K02: Jeśli W > 0, to idź do K01
K03: Wyprowadź otrzymane cyfry w kolejności odwrotnej do ich otrzymania
K04: Zakończ

 

Przykład:

Przeliczyć na system dwójkowy liczbę 582642(10).

 

582642 div 2 =  291321  i reszta 0
291321 div 2 =  145660  i reszta 1
145660 div 2 =  72830  i reszta 0
72830 div 2 =  36415  i reszta 0
36415 div 2 =  18207  i reszta 1
18207 div 2 =  9103  i reszta 1
9103 div 2 =  4551  i reszta 1
4551 div 2 =  2275  i reszta 1
2275 div 2 =  1137  i reszta 1
1137 div 2 =  568  i reszta 1
568 div 2 =  284  i reszta 0
284 div 2 =  142  i reszta 0
142 div 2 =  71  i reszta 0
71 div 2 =  35  i reszta 1
35 div 2 =  17  i reszta 1
17 div 2 =  8  i reszta 1
8 div 2 =  4  i reszta 0
4 div 2 =  2  i reszta 0
2 div 2 =  1  i reszta 0
1 div 2 =  0  i reszta 1 - koniec, wynik odczytujemy w kierunku z dołu do góry

 

582642(10) = 10001110001111110010(2)

Obliczanie wartości dziesiętnej
dowolnej liczby binarnej

(C)2005 mgr Jerzy Wałaszek   I LO w Tarnowie
Wprowadź poniżej liczbę binarną

...

System binarny jest mało czytelny dla człowieka i łatwo się nam w nim pomylić i pogubić. Na przykład dwa ciągi binarne:

 

1101001001001110100010100010001000101 oraz 1101001001001110100010100110001000101

 

różnią się tylko jednym bitem, czy możesz go od razu wskazać?

Programując komputery często mamy do czynienia z wartościami binarnymi. Aby uprościć ich zapis wykorzystuje się dwa systemy zastępcze - ósemkowy oraz szesnastkowy. Wybór tych systemów jest podyktowany tym, iż są one bardziej czytelne dla człowieka od systemu binarnego oraz w bardzo prosty sposób można przeliczać liczby binarne na system ósemkowy i szesnastkowy.

 

Konwersja dwójkowo - ósemkowa

Liczbę binarną (lub ogólniej dowolny kod binarny) można wyrazić w systemie ósemkowym. Do konwersji niezbędna nam jest poniższa tabela (sugeruję wyuczenie się jej na pamięć), w której wartości cyfr ósemkowych wyrażone są w naturalnym kodzie binarnym.

Tabelka konwersji
dwójkowo ósemkowej

cyfra
ósemkowa

wartość
dwójkowa

0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111

Zasada konwersji dwójkowo ósemkowej jest następująca. Liczbę binarną (kod binarny) rozdzielamy na grupy 3 bitowe idąc od strony prawej ku lewej. Jeśli w ostatniej grupie jest mniej bitów, to brakujące bity uzupełniamy zerami. Teraz każdą z 3 bitowych grup zastępujemy cyfrą ósemkową zgodnie z tabelką konwersji. W wyniku otrzymujemy liczbę ósemkową o identycznej wartości jak wyjściowa liczba binarna.

 

Przykład:

Konwertujemy liczbę dwójkową na ósemkową:

1110101000101010111101010101

 001   110   101   000   101   010   111   101   010   101 
1 6 5 0 5 2 7 5 2 5

 

1110101000101010111101010101(2) = 1650527525(8)


Zwrocie uwagę na fakt, iż zapis ósemkowy jest dla nas o wiele bardziej czytelny od zapisu dwójkowego. Ambitnym czytelnikom proponuję sprawdzenie, iż wartości obu liczb są identyczne (można skorzystać z formularzy w poprzednich rozdziałach naszego opracowania).

Konwersja w drugą stronę jest jeszcze prostsza. Każdą cyfrę ósemkową zastępujemy grupą 3 bitów wg tabelki konwersji. Grupy łączymy w jedną liczbę binarną.

 

Przykład:

Konwertujemy liczbę ósemkową na dwójkową:

7266501472

7 2 6 6 5 0 1 4 7 2
 111   010   110   110   101   000   001   100   111   010 

 

7266501472(8) = 111010110110101000001100111010(2)

 

Konwersja dwójkowo - szesnastkowa

W podobny sposób do opisanej powyżej konwersji dwójkowo ósemkowej wykonujemy konwersję dwójkowo szesnastkową. Znów potrzebujemy tabelkę konwersji, w której cyfry szesnastkowe są przeliczone na system dwójkowy:

Tabelka konwersji
dwójkowo szesnastkowej

cyfra
szesnastkowa

wartość
dwójkowa

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

Liczbę dwójkową dzielimy na grupy 4-ro bitowe idąc od strony prawej ku lewej. Jeśli w ostatniej grupie jest mniej bitów, to brakujące wypełniamy zerami. Następnie każdą grupę bitów zastępujemy jedną cyfrą szesnastkową zgodnie z tabelką konwersji.

 

Przykład:

Konwertujemy liczbę dwójkową na szesnastkową:

1110101000101010111101010101

 1110   1010   0010   1010   1111   0101   0101 
E A 2 A F 5 5

 

1110101000101010111101010101(2) = EA2AF55(16).

Konwersja w drugą stronę jest następująca:

Każdą cyfrę szesnastkową zastępujemy grupą 4 bitów wg tabelki konwersji. Grupy łączymy w całość otrzymując odpowiednik dwójkowy wyjściowej liczby szesnastkowej.

 

Przykład:

Konwertujemy liczbę szesnastkową na dwójkową:

3FAC72608D

3 F A C 7 2 6 0 8 D
0011 1111 1010 1100 0111 0010 0110 0000 1000 1101

 

3FAC72608D(16) = 11111110101100011100100110000010001101(2)


Zapis szesnastkowy w pewnym sensie jest lepszy od ósemkowego, ponieważ lepiej pasuje do opisu zawartości komórek pamięci komputera. Komórka pamięci jest 8-mio bitowa, zatem jej zawartość przekłada się zawsze na dwucyfrową liczbę szesnastkową (w zapisie ósemkowym są to 3 cyfry, z których najstarsza może przyjąć jedynie wartości od 0 do 3).

 


   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2024 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe