1. Systemy liczb 1.1. System dziesiętny Najpopularniejszym systemem liczb jest system dziesiętny, którym posługujemy się na co dzień. W systemie dziesiętnym występują cyfry: 0, 1, 2, 3, …, 9. Podstawą systemu dziesiętnego jest liczba 10, czyli wszystkie liczby są ciągiem cyfr, które są rozumiane jako mnożnik kolejnych potęg liczby 10: , = ∙ 10ଶ + ∙ 10ଵ + ∙ 10 + ∙ 10ିଵ + ∙ 10ିଶ 1.2. System dwójkowy – binarny W systemie dwójkowym występują dwie cyfry: 0, 1. Podstawą systemu jest liczba 2, co oznacza, że kolejne cyfry liczby zapisanej w systemie dwójkowym oznaczają mnożniki kolejnych potęg liczby 2. 0111(2) = 0·23 + 1·22 + 1·21 +1·20 = 0 + 4 + 2 + 1 = 7(10) 1.3. System ósemkowy – oktalny W systemie ósemkowym mamy 8 cyfr: 0, 1, 2,…,7. Podstawą systemu jest liczba 8. 341(8) = 3·82 + 4·81 +1·80 = 192 + 32 +1 = 225(10) 1.4. System szesnastkowy – heksagonalny Cyfry w systemie szesnastkowym: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Podstawą systemu jest liczba 16. D5(16) = D·161 + 5·160 = 13·16 +5·1 = 213(10) 2. Przeliczanie liczb pomiędzy systemami 2.1. Zamiana z systemu dziesiętnego na binarny i odwrotnie Metoda zamiany liczby z systemu dziesiętnego na dwójkowy polega na dzieleniu liczby przez 2 i zapamiętywanie reszty z tego dzielenia. Następnie dzielimy przez 2 wynik poprzedniego dzielenia aż do otrzymania liczby 0. 67 33 16 8 4 2 1 0 1 1 0 0 0 0 1 ↑ 67:2 = 33 reszty 1 33:2 = 16 reszty 1 16:2 = 8 reszty 0 8:2 = 4 reszty 0 4:2 = 2 reszty 0 2:2 = 1 reszty 0 1:2 = 0 reszty 1 1000011(2) = 1·26 +0·25 + 0·24 + 0·23 + 0·22 + 1·21 + 1·20 = 64 + 2 + 1 = 67(10) 2.2. Zamiana z systemu dziesiętnego na ósemkowy i odwrotnie 43 5 0 3 5 ↑ 43:8=5 reszty 3 5:8 = 0 reszty 5 53(8) = 5·81 + 3·80 = 40 +3 =43(10) 2.3. Zamiana z systemu dziesiętnego na szesnastkowy i odwrotnie 437 27 1 0 5 11 1 ↑ 437:16 = 27 reszty 5 27:16 = 1 reszty 11 (B) 1:16 = 0 reszty 1 11(10) = B 1B5(16) = 1·162 + B·161 + 5·160 = 256 + 11·16 + 5 = 261 + 176 = 437(10) 3. Dodawanie i odejmowanie liczb binarnych W dodawaniu liczb binarnych należy pamiętać o kilku zasadach: 0+0=0 0+1=1 1+0=1 1 + 1 = 0 a 1 zapisujemy w pamięci ( przenosimy o jedną pozycję w lewo) 1 + 1 + 1 = 1 i 1 zapisujemy w pamięci (przenosimy o jedna pozycję w lewo) 5 + 6 = 11 5(10) = 000101(2) 6(10) = 000110(2) 1 000101 + 000110 001011 Odejmowanie liczb w systemie binarnym to nic innego jak dodawanie liczb ujemnych. 4. Liczby ujemne w systemie dwójkowym Istnieje wiele umownych sposobów zapisywania liczb ujemnych w systemie dwójkowym. Najprostszym z nich jest zapisanie bitu znaku na najbardziej znaczącej pozycji (pierwszej od lewej strony). Przyjmujemy, że liczba ujemna ma bit znaku 1, natomiast liczba dodatnia i zero ma bit znaku równy 0. 1=0001, -1=1001. Ważnym jest, aby system zapisu liczb był ściśle określony, aby wiadomo było, iż liczby zapisujemy na przykład na czterech bitach, z których pierwszy jest bitem znaku. Nie określenie dokładnie sposoby zapisu liczb może prowadzić do błędów. Dla przykładu liczba 1 zapisana w systemie dwójkowym na czterech bitach, gdzie pierwszy jest bitem znaku może być zinterpretowana jako liczba 9. Taki system jednak nie jest stosowany ze względu na problemy z operacjami arytmetycznymi (np. dodanie 1 i -1 nie daje 0!) 4.1. System zapisu U1 W systemie zapisu liczb binarnych U1 kod binarny liczby ujemnej zostaje odwrócony (1 zamieniamy na 0) 6 = 00110 -6 = 11001(U1) Zasady odejmowania liczb w systemie U1: • Odejmowanie dwóch liczb ujemnych od siebie realizowane jest przez dodanie ich do siebie wraz z bitem znaku • Jeżeli dodawanie prowadzi do przeniesienia jedynki z najbardziej znaczącej pozycji, to przeniesienie to wykonujemy na pozycje najmniej znaczącą (czyli dodajemy 1) • Jeżeli wynik dodawania jest dodatni to wynik jest liczbą binarną • Jeżeli wynik dodawania jest ujemny, to wykonujemy na nim jeszcze raz zapis U1 (odwracamy bity) pozostawiając bit znaku bez zmian. 9 – 12 = –3 12(10) = 01100 -12(10) = 10011 0 1 1 1001 0011 1100 1 0011 9 -12 Wynik ujemny więc jeszcze raz wykonujemy zapis U1 (odwrócenie bitów bez zmiany bitu znaku) -3 9–6=3 9 = 01001 6 = 00110 -6 = 11001(U1) 1 1 1 0 +1 +0 1001 1001 0010 +0 0 0001 0011 9 -6 Mamy przeniesienie jedynki z najbardziej znaczącej pozycji, więc dodajemy ją do najmniej znaczącej pozycji: Wynik jest dodatni, więc jest to liczba binarna 00011(2) = 3(10) 4.2. System zapisu U2 W zapisie liczb binarnych U2 liczby ujemne uzyskujemy z liczb dodatnich poprzez odwrócenie bitów i dodanie do wyniku liczby 1. 6 = 00110 Negujemy bity: 11001 + 00001 -6 = 11010(U2) Zasady odejmowania liczb w systemie U2: • Odejmowanie dwóch liczb ujemnych od siebie realizowane jest przez dodanie ich do siebie wraz z bitem znaku • Jeżeli dodawanie prowadzi do przeniesienia jedynki z najbardziej znaczącej pozycji, to przeniesienie to zostaje odrzucone • Jeżeli wynik dodawania jest dodatni to wynik jest liczbą binarną • Jeżeli wynik dodawania jest ujemny, to wykonujemy na nim jeszcze raz zapis U2 (odwracamy bity) pozostawiając bit znaku bez zmian. 9 – 12 = –3 12(10) = 01100 -12(10) = 10100 0 1 1 1001 0100 1101 1 +0 1 0010 0001 0011 9 -12 Wynik ujemny więc jeszcze raz wykonujemy zapis U2 (odwrócenie bitów bez zmiany bitu znaku) Odwracamy bity Dodajemy 1 -3 9–6=3 9 = 01001 6 = 00110 -6 = 11010(U2) 1 1 0 +1 +0 1001 1010 0011 9 -6 Mamy przeniesienie jedynki z najbardziej znaczącej pozycji, ignorujemy tą jedynkę Wynik jest dodatni, więc jest to liczba binarna 00011(2) = 3(10)