Systemy liczbowe w architekturze komputerów materiał do wykładu 1/3 dr inż. Rafał Klaus Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia na Politechnice Poznańskiej w zakresie technologii informatycznych i ich zastosowań w przemyśle" POKL.04.01.02-00-189/10
Systemy liczbowe Addytywne: w których liczby tworzy się przez dodawanie kolejnych symboli, np. rzymski system liczbowy, hieroglificzny, alfabetyczny, gdzie wartość liczby jest sumą wartości jej znaków cyfrowych Pozycyjne: które posiadają symbole n liczb naturalnych: 0, 1, 2, ..., n − 1, gdzie n to tzw. podstawa systemu, która może być dowolną liczbą naturalną większą niż 1. Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
System pozycyjny cn * p n + . . . + c2 * p 2 + c1 * p 1 + c0 * p 0 oznaczając przez cn - cyfrę systemu pozycyjnego i n – pozycję cyfry p - podstawę systemu, wartość reprezentowaną przez symbol liczby zapisujemy jako sumę iloczynów postaci: cn * p n + . . . + c2 * p 2 + c1 * p 1 + c0 * p 0 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
System dziesiętny Symbol Wartość w systemie Liczba 6 6 *10 0 sześć 65 6 * 10 1 + 5 * 10 0 sześćdziesiąt pięć 243 2 * 10 2 + 4 * 10 1 +3 * 10 0 dwieście czterdzieści trzy Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Konwersje systemów (4013)5 = 4 * 5 3 + 0 * 5 2 + 1 * 5 1 + 3 * 5 0 = 500 + 5 + 3 = (508)10 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
System dwójkowy U[V] 0 - stan niski – (brak działania/brak sygnału) 5 1 t 0,8 2 5 U[V] Cyframi tego systemu są: 0 i 1. Symbolizują one dwa stany tzw. 0 - stan niski – (brak działania/brak sygnału) 1- stan wysoki – (działanie układu/sygnał) Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Konwersja (z BIN na DEC) (11011101)2 = = 1 * 2 7 + 1 * 2 6 + 0 * 2 5 + 1 * 2 4 + 1 * 2 3 + 1 * 2 2 + 0 * 2 1 + 1 * 2 0 = 128 + 64 + 16 + 8 + 4 + 1 = = (221)10 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Konwersja (z DEC na BIN) DEC BIN : dzielenie przez 2 44 0 22 0 4410 = 1011002 11 1 5 1 2 0 1 1 0 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Konwersja (z DEC na BIN) Część ułamkowa liczby . 5625 Kolejne wyniki mnożenia przez 2 Część całkowita liczby: 61 . Kolejne wyniki dzielenia przez 2 30 1 1 1250 Część całkowita Reszta 15 2500 7 1 5000 3 1 1 0000 1 1 61.562510 = 111101.10012 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
System szesnastkowy Cyframi tego systemu są: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F (1011|0011|1010)2 = (B3A)16 (11|1011|1110)2 = (0011|1011|1110)2 = (3BE)16 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Cyfry systemu szesnastkowego Liczby systemu dziesiątkowego Liczby systemu dwójkowego 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 A 10 1010 B 11 1011 C 12 1100 D 13 1101 E 14 1110 F 15 1111 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Konwersja HEX HEX na DEC (3BE)16 = 3 * 16 2 + 11 * 16 1 + 14 * 16 0 = 768 + 176 + 14 = (958)10 BIN na HEX 1111000111000.111000111B 1 1110 0011 1000.1110 0011 1 0001 1110 0011 1000.1110 0011 1000 E 3 8 . E 3 8 1111000111000.111000111B = 1E38.E38H Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Konwersja HEX na BIN 0E6C.7F8H E 6 C . 7 F 8 1110 0110 1100 . 0111 1111 1000 0E6C.7F8H = 111001101100.011111111000B Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Liczby stałoprzecinkowe cn-1...c0,c-1c-2...c-m = cn-1pn-1 + ... + c0p0 + c-1p-1 + c-2p-2 + ... +c-mp-m 253,763 = 2 x 102 + 5 x 101 + 3 x 100 + 7 x 10-1 + 6 x 10-2 + 3 x 10-3 432,321(5) = 4 x 52 + 3 x 51 + 2 x 50 + 3 x 5-1 + 2 x 5-2 + 1 x 5-3 432,321(5) = 4 x 25 + 3 x 5 + 2 x 1 + 3 x 1/5 + 2 x 1/25 + 1 x 1/125 432,321(5) = 100 + 15 + 2 + 3/5 + 2/25 + 1/125 432,321(5) = 117 86/125 432,321(5) = 117,688 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Dwójkowe liczby stałoprzecinkowe 1101,1011(2) = 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20 + 1 x 2-1 + 0 x 2-2 + 1 x 2-3 + 1 x 2-4 1101,1011(2) = 1 x 8 + 1 x 4 + 0 x 1 + 1 x 1 + 1 x ½ + 0 x 1/4 + 1 x 1/8 + 1 x 1/16 1101,1011(2) = 8 + 4 + 1 + 1/2 + 1/8 + 1/16 1101,1011(2) = 13 + 10/16 1101,1011(2) = 13,625 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Operacje arytmetyczne - dodawanie Tabliczka dodawania binarnego 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 i 1 dalej 1001 9 + 0011 +3 1100 12 0011,011 3,375 + 0111,110 + 7,750 1011,001 11,125 1010 10 + 0110 +6 10000 16 Przekroczenie górnej granicy liczby - nadmiar (ang. overflow). Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Operacje arytmetyczne - odejmowanie Tabliczka odejmowania binarnego 0 - 0 = 0 1 - 0 = 1 1 - 1 = 0 0 - 1 = 1 i pożyczka 1011 11 - 0101 -5 0110 6 1111 15 - 0111 -7 1000 8 0011 3 - 0100 -4 ...111111 -1 Przekroczenie dolnej granicy liczby - niedomiar (ang. underflow). Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Operacje arytmetyczne - mnożenie Tabliczka mnożenia binarnego 0 x 0 = 0 1 x 0 = 0 0 x 1 = 0 1 x 1 = 1 0011 3 x 0101 x 5 0000 ... + 0011 001111 15 1011 11 x 1101 x 13 33 + 1011 + 11 10001111 143 nadmiar (ang. overflow) Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Operacje arytmetyczne - mnożenie 10,1 2,5 x 11,01 x 3,25 101 125 50 + 101 + 75 1000001 1000,001 8125 8,125 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Operacje arytmetyczne - dzielenie polega na cyklicznym odejmowaniu odpowiednio przesuniętego dzielnika od dzielnej Podzielimy 1110(2) przez 11(2) (14 : 3). 1 1110 - dzielna 11 - przesunięty dzielnik 0010 - różnica dzielnej i przesuniętego dzielnika Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Operacje arytmetyczne - dzielenie 100 - wynik dzielenia 1110 - dzielna - 11 - dzielnik 0010 - dzielna po odejmowaniu przesuniętego dzielnika - 11 - dzielnika nie można odjąć - 11 - dzielnika nie można odjąć, koniec - reszta z dzielenia Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Liczby ujemne znak-moduł Znak kodowany jest stanem najstarszego bitu: Wartość liczby obliczamy wg następującego wzoru: bit znaku = 0 - liczba dodatnia bit znaku = 1 - liczba ujemna WZ-M = (1 - 2 x bit znaku) x WM WZ-M = (-1)bit znaku x WM Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
liczba w kodzie Z-M (0 101)(ZM) = (1 - 2 x 0) x (1 x 22 + 0 x 21 + 1 x 20) (0 101)(ZM) = 1 x (1 x 4 + 1 x 1) (0 101)(ZM) = 1 x (4 + 1) (0 101)(ZM) = 1 x 5 (0 101)(ZM) = 5 (1101)(ZM) = (1 - 2 x 1) x (1 x 22 + 0 x 21 + 1 x 20) (1101)(ZM) = -1 x (1 x 4 + 1 x 1) (1101)(ZM) = -1 x (4 + 1) (1101)(ZM) = -1 x 5 (1101)(ZM) = -5 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Liczba w kodzie Z-M – 127 + 127 100...0 – 0 znak moduł 000...0 + 0 7 6 ..................... – 127 + 127 100...0 – 0 znak moduł 000...0 + 0 0 1 + – Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Two's Complement Numbering System – U2 WU2 = cn-1 x (- pn-1) + cn-2 x pn-2 + ... + c1 x p1 + c0 x p0 0101(U2) = 0 x (- 23) + 1 x 22 + 0 x 21 + 1 x 20 0101(U2) = 0 x (- 8) + 1 x 4 + 0 x 2 + 1 x 1 0101(U2) = 0 + 4 + 1 0101(U2) = 5 1101(U2) = 1 x (- 23) + 1 x 22 + 0 x 21 + 1 x 20 1101(U2) = 1 x (- 8) + 1 x 4 + 0 x 2 + 1 x 1 1101(U2) = (- 8) + 4 + 1 1101(U2) = - 8 + 5 1101(U2) = - 3 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Kod U2 Oblicz wartość przeciwną do liczby 0011(U2) = 3: Sprawdzenie 1101(U2) = 1 x (-23) + 1 x 22 + 0 x 21 + 1 x 20 1101(U2) = 1 x (-8) + 1 x 4 + 0 x 2 + 1 x 1 1101(U2) = -8 + 4 + 1 1101(U2) = -3 NOT 0011 1100 + 0001 1101 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Kod U2 - działania 5 + (-3) 2-(-3) 0101 0010 + 1101 - 1101 1 0010 + 1101 - 1101 1 0010 1 0101 Wynik 2 Wynik 5 (-2) x 3 11111110 x 00000011 + 11111110 1011111010 Wynik = -6 10 0110 : 0011 - 011 0000 0011 NOT 0010 1101 + 0001 1110 6 = 0110(U2) -3= 1101(U2) - zmieniamy na 3 = 0011(U2) Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
kod BCD - Binary Coded Decimal 2 0010 3 0011 7 0111 9 1001 2379(10) = 0010001101111001(BCD 01101000100100110110(BCD) = 0110 1000 1001 0011 0110 01101000100100110110(BCD) = 6 x 104 + 8 x 103 + 9 x 102 + 3 x 101 + 6 x 100 01101000100100110110(BCD) = 6 x 10000 + 8 x 1000 + 9 x 100 + 3 x 10 + 6 x 1 01101000100100110110(BCD) = 60000 + 8000 + 900 + 30 + 6 01101000100100110110(BCD) = 68936 1672(16) = 0001011001110010(2) = 0001 0110 0111 0010(BCD) = 1672(10 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Kod BCD – korekcja 29 + 19 31 -18 0010 1001 0011 0001 + 0001 1001 - 0001 1000 0100 0010 0001 1001 + 0000 0110 - 0000 0110 0100 1000 0001 0011 Wynik = 48 Wynik = 13 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Kod Gray’a Kod Gray’a 000 001 011 010 110 111 101 100 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Zapis zmiennoprzecinkowy WFP = m x pw m - mantysa zapisana w systemie o podstawie p p - podstawa danego systemu pozycyjnego w - wykładnik zapisany w systemie o podstawie p. 9,45 x 1015 = 94,5 x 1014 = 0,945 x 1016 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Liczby zmiennoprzecinkowe (3,21 x 1012)(4) m = 3,21(4) = 3 x 40 + 2 x 4-1 + 1 x 4-2 = 3 x 1 + 2 x 1/4 + 1 x 1/16 m = 3 + 2/4 + 1/16 = 39/16 p = 10(4) = 1 x 41 + 0 x 40 = 1 x 4 + 0 x 1 p = 4 w = 12(4) = 1 x 41 + 2 x 40 = 1 x 4 + 2 x 1 = 4 + 2 w = 6 (3,21 x 1012)(4) = 39/16 x 46 = 14592 (10) Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
p = 2 , standard IEEE 754 01...00 – 3 cecha 01...01 – 2 63 62 52 51 0 s c m 01...00 – 3 cecha 01...01 – 2 przesunięta 01...10 – 1 01...11 0 10...00 1 znak liczby 10...01 2 0 + 10...10 3 1 – 10...11 4 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
dziękuję Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego