SYSTEMY LICZBOWE 1. Systemy liczbowe Najpopularniejszym systemem liczenia jest system dziesiętny, który doskonale sprawdza się w życiu codziennym. Jednak jego praktyczna realizacja w elektronice cyfrowej napotkałaby zbyt wiele trudności technicznych. Z tego powodu zostały stworzone inne systemy liczbowe, np. system dwójkowy, czy szesnastkowy, które bardziej odpowiadają potrzebom techniki cyfrowej. 1.1. System dziesiętny Dziesiętny system liczenia skalda się z 10 cyfr: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. W systemie tym odpowiednie liczby wyrażamy za pomocą cyfr, przy czym za pomocą jednej cyfry można wyrazić 10 liczb, za pomocą dwóch 100 liczb, za pomocą trzech 1000 liczb itd. Mówimy, że liczba dziesiętna posiada podstawę liczenia 10, co w praktyce oznacza, że dana liczba jest ciągiem cyfr, które są rozumiane jako mnożnik kolejnych potęg liczby dziesięć, np.: 275,538 = 2 10 2 + 7 10 1 + 5 10 0 + 5 10 1 + 3 10 2 + 8 10 3 1.2. System dwójkowy (binarny) Dwójkowy system liczenia skalda się z dwóch cyfr: 0 i 1. Cyfra w systemie dwójkowym jest nazywana cyfrą binarną, a popularnie bitem. Za pomocą jednej cyfry binarnej można przestawić tylko dwie liczby, za pomocą dwóch 4 liczby, za pomocą trzech cyfr 8 liczb itd. W systemie dwójkowym liczba posiada podstawę liczenia 2, co oznacza, że jest ona ciągiem cyfr typu 0 lub 1. Są one mnożnikami kolejnych potęg liczby 2, np.: dwójkowym 0111 (2) = 0 2 3 + 1 2 2 + 1 2 1 + 1 2 0 = 7 (10) Pierwszy bit z lewej strony nosi nazwę najstarszego bitu (most significant bit MSB), natomiast pierwszy bit z jej prawej strony nazywany jest najmłodszym bitem (least significant bit LSB). 1.3. System ósemkowy (oktalny) 1.4. System szesnastkowy (heksadecymalny) Oktalny system ma podstawę równą "8". Zapis liczb odbywa się przy użyciu cyfr: 0, 1, 2, 3, 4, 5, 6, 7. Np. zapis: 30 (8) = 3 8 1 + 0 8 0 = 24 (10) ósemkowym System szesnastkowy ma podstawę równą "16". Zapis liczb odbywa się przy użyciu następujących cyfr i znaków: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, gdzie: A- oznacza "10" B- 11 C- 12 D- 13 E- 14 F- 15 Np.: szesnastkowym D (16) = 13 (10)
2. Przeliczanie liczb pomiędzy systemami 2.1. Zamiana liczb z systemu dziesiętnego na dwójkowy i odwrotnie Podstawowy sposób polega na kolejnym dzieleniu liczby dziesiętnej przez 2. Jeśli nie ma reszty to wpisujemy 0 a jak jest reszta to 1. Liczbę zapisujemy od najstarszego do najmłodszego bitu więc: 69 (10) = 1000101 (2) Aby przeliczyć liczbę z systemu dwójkowego na dziesiętny musimy skorzystać z poniższego wzoru: 1000101 (2) = 1 2 6 + 0 2 5 + 0 2 4 + 0 2 3 + 1 2 2 + 0 2 1 + 1 2 0 = 69 (10) 2.2. Zamiana liczb z systemu dziesiętnego na ósemkowy i odwrotnie Aby z liczby dziesiętnej uzyskać odpowiadającą jej liczbę ósemkową należy dzielić daną liczbę przez 8, wyniki kolejnych dzieleń zapisać w słupku, a reszty z dzieleń zapisać po prawej stronie za kreska. Kolejne dzielenia wykonujemy do momentu aż uzyskamy wynik z dzielenia mniejszy niż 1. Następnie wystarczy przepisać uzyskane reszty z dzieleń od dołu do góry. 43:8 = 5 reszty 3 5:8 = 0 reszty 5 Wynik: 43 (10)=53 (8) Aby przeliczyć liczbę z systemu ósemkowego na dziesiętny musimy skorzystać z poniższego wzoru: x 8 n + + x 8 2 + x 8 1 + x 8 0 5 8 1 + 3 8 0 = 40 + 3 = 43 (10) 2.3. Zamiana liczb z systemu dziesiętnego na szesnastkowy i odwrotnie Dzielimy podobnie jak w poprzednich systemach pamiętając o wartościach jakie przybiera reszta i pamiętając o tym by 10, 11, itd. zapisywać jako A, B itd... 456:16 = 28 reszty 8 28:16 = 1 reszty C 1:16 = 0 reszty 1 Wynik: 456 (10) = 1C8 (16) Aby przeliczyć liczbę z systemu szesnastkowego na dziesiętny musimy skorzystać z poniższego wzoru: x 16 n + + x 16 2 + x 16 1 + x 16 0 1C8 (16) = 1 16 2 + 12 16 1 + 8 16 0 = 256 + 192 + 8 = 456 (10)
3. Wartość liczby w zapisie znak - moduł Koncepcyjnie zapis znak - moduł (w skrócie ZM - ang. SM Signed Magnitude) jest najbardziej zbliżony do systemu zapisu liczb używanego przez nas samych. Liczba ZM składa się z dwóch części - bitu znaku oraz bitów wartości liczby (modułu): Dla liczb dodatnich i zera bit znaku ma wartość 0, dla liczb ujemnych i zera ma wartość 1. Format zapisu ZM musi być ściśle ustalony, aby wiadomo było, który bit jest bitem znaku - w operacjach arytmetycznych bit znaku musimy traktować inaczej niż inne bity. Obliczyć wartość dziesiętną liczby 10110111 (ZM). Pierwszy bit zapisu ZM jest bitem znaku. Wartość 1 informuje nas, iż jest to liczba ujemna. Pozostałe bity tworzą wartość liczby. Moduł jest zapisany w naturalnym systemie dwójkowym, zatem: 4. Działania na liczbach binarnych 4.1. Dodawanie liczb binarnych: W dodawaniu liczb binarnych należy pamiętać o takich zasadach, że: 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 i 1zapisujemy w pamięci lub pisząc inaczej "przenosimy o jedną pozycję dalej" 5 (10)+6 (10)=11 (10) 5 (10)=101 (2) 6 (10)=110 (2) 1011 (2)=11 (10)
4.2. Odejmowanie liczb binarnych Odejmowanie liczb binarnych wykonuje się poprzez zamianę jednej z liczb na ujemną. A zatem odejmowanie jest niczym innym jak dodawaniem ujemnych liczb binarnych. Liczby binarną można zapisać w postaci ujemnej na dwa sposoby: 1. Zapis Uzupełnienie do 1 - U1, czyli 10110100 (2)=01001011 (U1). Wszystkie bity przepisujemy z zaprzeczeniem. Uzupełnienie do 1 liczby binarnej jest zawsze negacją bitów tej liczby. 2. Zapis Uzupełnienie do 2 - U2, czyli 10110100 (2)=01001100 (U2). Przepisujemy bity od prawej strony do pierwszej jedynki (włącznie)a kolejne bity przepisujemy na odwrót (z zaprzeczeniem). Czy liczby ujemne będą zapisane na U1 czy na U2 to stanowi kwestią umowną. Należy z góry zdefiniować jaki jest stosowany zapis dla ujemnych. Schemat dodawania w wypadku zapisu U1: Dodawanie dwóch liczb binarnych w przypadku, gdy liczby ujemne są reprezentowane w zapisie U1, wykonywane jest przez dodanie tych liczb wraz z bitami znaku. Gdy istnieje przeniesienie z najbardziej znaczącej pozycji, to wynik zostaje zwiększony o jeden, czyli przeniesienie dodajemy do najmniej znaczącej pozycji. Jeżeli wynik dodawania jest dodatni to otrzymana liczba jest liczbą binarną. Jeżeli wynik jest ujemny to należy wykonać na nim jeszcze raz zapis U1,pozostawiając bit znaku bez zmian, i wtedy wynik przyjmie postać binarną. Schemat dodawania w wypadku zapisu U2 Dodawanie dwóch liczb binarnych ze znakiem w przypadku, gdy liczba ujemna zapisana jest jako U2, wykonywane jest przez dodanie tych liczb łącznie z bitem znaku. Przeniesienie na najbardziej znaczącej pozycji zostaje odrzucone. Jeżeli wynik dodawania jest dodatni to otrzymana liczba jest liczbą binarną. Jeżeli wynik dodawania jest ujemny to na otrzymanej liczbie należy wykonać jeszcze raz zapis U2 pozostawiając oczywiście bit znaku bez zmian.
W wypadku innych systemów liczbowych (ósemkowy, szesnastkowy itp...)schemat postępowania przedstawia się podobnie. Również należy uzyskać zapis U1 lub U2 a później rozpocząć odejmowanie.