Systemy Liczbowe (technika cyfrowa) System liczbowy - to inaczej zbiór reguł do jednolitego definiowania, zapisywania i nazywania liczb. Do zapisywania liczb zawsze używa się pewnego skończonego zbioru znaków - zwanych cyframi (np. arabskimi lub rzymskimi), które jednak można zestawiać ze sobą na różne sposoby (w różnej kolejności) otrzymując odpowiednią liczbę kombinacji. Pozycyjne systemy liczbowe: jedynkowy system liczbowy dwójkowy system liczbowy siódemkowy system liczbowy ósemkowy system liczbowy dziesiętny system liczbowy dwunastkowy system liczbowy szesnastkowy system liczbowy sześćdziesiątkowy system liczbowy
Złożone systemy liczbowe można już podzielić na: addytywne - posiadają osobne symbole dla pierwszych kilku liczb, a następnie posiadają kolejne symbole dla ich wielokrotności. W systemach tych liczby tworzy się przez "dodawanie" kolejnych symboli i stąd ich nazwa (np. liczby rzymskie "X"=10,"V"=5,"I"=1 to XVI = 10+5+1 = 16). Najstarszym tego rodzaju systemem liczbowym był stosowany w Mezopotamii sześćdziesiątkowy system liczbowy, w którym podstawowymi wielokrotnościami były 12 i 60. pozycyjne - które posiadają pojedyncze symbole tylko dla kilku pierwszych liczb. Cyfry te są kolejno umieszczane w ściśle określonych pozycjach i oznaczają mnożnik potęgi podstawy systemu (najwyższej liczby reprezentowanej pojedynczą cyfrą plus jeden na cyfrę zero). np. liczba 6003 w dziesiętnym systemie liczbowym, w którym podstawą pozycji jest właśnie 10 odczytuje się jako: 6×103+0×102+0×101+3×100 = 6×1000+0×100+0×10+3×1 = 6003
W praktyce najczęściej stosuje się różne systemy liczbowe w Informatyce. Z racji reprezentacji liczb w pamięci komputerów za pomocą bitów, najbardziej naturalnym systemem jest dwójkowy system liczbowy. W okresie pionierskich czasów komputeryzacji ważną rolę odgrywał system ósemkowy, który spotyka się niekiedy do dziś. 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. Z racji budowy komputerów, w której np. adresy są potęgą liczby 2 oraz dzielą się przez 8 i 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. Dla przykładu: 216 = 6553610 = 1000016 232 = 429496729610 = 10000000016 1000016 i 10000000016 są znacznie łatwiejsze do zapamiętania. System szesnastkowy spotykany jest też na stronach WWW (HTML), gdzie w ten sposób oznacza się kolory poszczególnych elementów strony.
Binarny (dwójkowy) system liczbowy to pozycyjny system liczbowy, w którym podstawą pozycji są kolejne potęgi liczby 2. Do zapisu liczb potrzebne są więc tylko dwa znaki: 0 i 1. Powszechnie używany w informatyce. Jak w każdym pozycyjnym systemie liczbowym, liczby zapisuje się tu jako ciąg cyfr, z których każda jest mnożnikiem kolejnej potęgi liczby stanowiącej podstawę systemu np. liczba zapisana w dziesiętnym systemie liczbowym jako 10, w systemie dwójkowym przybiera postać 1010, gdyż: 1x23 + 0x22 + 1x21 + 0x20 = 8+2 = 10. Liczby w systemach niedziesiętnych oznacza się czasami indeksem dolnym zapisanym w systemie dziesiętnym, a oznaczającym podstawę pozycji danego systemu. W celu podkreślenia, że liczba jest dziesiętna można również napisać obok niej indeks, np. 101012 = 2110 W systemie dwójkowym można przedstawiać również liczby rzeczywiste. Dla przykładu ułamki dziesiętne dają się zapisać jako: 0,1510 = 0,00(1001)2 0,2810 = 0,(01000111101011100001)2
Obliczanie wartości dziesiętnej liczby zapisanej w systemie dwójkowym 43210 111102 = 11110 = 1x24 + 1x23 + 1x22 + 1x21 + 0x20 = = 1 x 16 + 1 x 8 + 1 x 4 + 1 x 2 + 0 x 1 = 16 + 8 + 4 + 2 = 30 Jedynka podobnie jak w systemie dziesiętnym ma różne wartości w zależności od swojej pozycji: na końcu oznacza 1, na drugiej pozycji od końca 2, na trzeciej 4, na czwartej 8, itd. Ponieważ 0 x 2n=0, oraz 1 x 2n = 2n aby obliczyć wartość liczby zapisanej dwójkowo, wystarczy zsumować potęgi dwójki odpowiadające cyfrom 1 w zapisie.
Obliczanie wartości binarnej liczby zapisanej w systemie dziesiętnym Zamiana 3010 na liczbę w systemie dwójkowym: 30 ÷ 2 = 15 reszta 0 15 ÷ 2 = 7 reszta 1 7 ÷ 2 = 3 reszta 1 3 ÷ 2 = 1 reszta 1 1 ÷ 2 = 0 reszta 1 Aby obliczyć wartość dwójkową liczby przepisujemy od końca reszty, które nam wyszły. 3010 = 111102
127 ÷ 2 = 63 reszta 1 19 ÷ 2 = 9 reszta 1 63 ÷ 2 = 31 reszta 1 9 ÷ 2 = 4 reszta 1 31 ÷ 2 = 15 reszta 1 4 ÷ 2 = 2 reszta 0 15 ÷ 2 = 7 reszta 1 2 ÷ 2 = 1 reszta 0 7 ÷ 2 = 3 reszta 1 1 ÷ 2 = 0 reszta 1 3 ÷ 2 = 1 reszta 1 1 ÷ 2 = 0 reszta 1 12710 = (1111111)2 1910 = (10011)2
Działania arytmetyczne Dodawanie w systemie dwójkowym jest prostą operacją. Odejmowanie w systemie dwójkowym.
Mnożenie w systemie dwójkowym.
Kod Binarny Bit to za mało, aby efektywnie kodować informację. Łączymy bity w grupy. Grupę taką traktujemy jak jeden symbol złożony. Poniższa tabelka przedstawia wszystkie symbole 1, 2, 3 i 4 bitowe: Jeśli słowo binarne złożone jest z jednego bitu, to można z niego zbudować tylko dwa symbole 0 i 1 (różowy). Dwa bity dają nam już cztery różne symbole (zielony): 00, 01, 10 i 11. Dalej trzy bity pozwalają utworzyć 8 różnych symboli (niebieski), a 4 bity 16 symboli. Zauważ, iż zwiększenie długości słowa bitowego o jeden bit podwaja liczbę możliwych do utworzenia symboli.
co najmniej [log2(n - 1) + 1] bitów Dla dowolnej skończonej ilości informacji zawsze można dobrać słówka binarne o takiej ilości bitów, aby utworzyć z nich pożądaną liczbę symboli. W ten sposób powstaje kod binarny. Teraz wystarczy otrzymanym symbolom binarnym nadać znaczenia i już możemy ich używać w ten sam sposób jak języka. n bitów => 2n różnych symboli binarnych. Pytanie: Ile trzeba bitów aby uzyskać X różnych symboli binarnych ? Dobrze co najmniej [log2(n - 1) + 1] bitów
1011000000001100111001101 Binarny kod znakowy Znak Kod a 00000 h 00111 v 10101 b 00001 i 01000 p 01111 w 10110 c 00010 j 01001 q 10000 x 10111 d 00011 k 01010 r 10001 y 11000 e 00100 l 01011 s 10010 z 11001 f 00101 m 01100 t 10011 g 00110 n 01101 u 10100 w a g o n 10110 00000 00110 01110 01101 1011000000001100111001101
1001101110010101100001110 Binarny kod znakowy Znak Kod a 00000 h 00111 v 10101 b 00001 i 01000 p 01111 w 10110 c 00010 j 01001 q 10000 x 10111 d 00011 k 01010 r 10001 y 11000 e 00100 l 01011 s 10010 z 11001 f 00101 m 01100 t 10011 g 00110 n 01101 u 10100 A teraz w drugą stronę, co to będzie ? 1001101110010101100001110 10011 01110 01010 11000 t o k y
Wartość liczby stałoprzecinkowej jest określana tak jak w pozycyjnym systemie liczbowym. Wagi bitów części całkowitej mają wartości (kolejno, od najbardziej znaczącego bitu): 2k−1 ...20, natomiast wagi bitów części ułamkowej mają wartości: 2−1 ...2− n. Dokładność reprezentacji wynosi 2−n, czyli jest równa wadze najmniej znaczącego bitu części ułamkowej. Na przykład jeśli na część całkowitą zostaną przeznaczone 4 bity (k=4), natomiast na część ułamkową 2 bity (n=2), wówczas: wartość maksymalna: 1111,112 = 23 + 22 + 21 + 20 + 2-1 + 2-2 = 15,7510 wartość minimalna: 0000,012 = 2-2 = 0,2510 przykładowa liczba: 1011,102 = 23 + 21 + 20 + 2-1 = 11,510
Kod BCD BCD Binary-Coded Decimal = dziesiętny zakodowany dwójkowo – stosowany w elektronice i informatyce sposób zapisu liczb; polegający na zakodowaniu kolejnych cyfr dziesiętnych liczby dwójkowo przy użyciu czterech bitów. Taki zapis pozwala na łatwą konwersję liczby do i z systemu dziesiętnego, jest jednak nadmiarowy (wykorzystuje tylko 10 czterobitowych układów z 16 możliwych). Kod BCD jest obecnie stosowany głównie w urządzeniach elektronicznych z wyświetlaczem cyfrowym (np. w kalkulatorach, miernikach cyfrowych) i w zastosowaniach finansowych informatyki (ujednoznacznia zapis części ułamkowych kwot i ułatwia dziesiętne zaokrąglanie). Czasami poszczególne cyfry są kodowane w nieco inny sposób, stąd kilka wariantów BCD (dla uściślenia wersja podstawowa zwana jest też BCD 8421 lub NBCD):
127 w podstawowym wariancie BCD: 0001 0010 0111
www.kf.imif.ap.siedlce.pl/Pliki/PTC_w02.ppt