DZIESIĘTNY SYSTEM LICZBOWY Do zapisu dowolnej liczby system wykorzystuje dziesięć symboli (cyfr): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Dowolną liczbę w systemie dziesiętnym możemy przedstawić jako następująca sumę: (a n-1...a 1 a 0 ) (10) = a n-1 *10 (n-1) +...+ a 1 *10 1 + a 0 *10 0 = gdzie: i - numer pozycji w liczbie, a i - dowolna z cyfr od 0 do 9, n - ilość cyfr (pozycji) w liczbie Przykład: 424 (10) = 4*10 2 + 2*10 1 + 4*10 0 n 1 i= 0 a i 10 i pozycja jedynek (0) pozycja dziesiątek (1) pozycja setek (2) 1
DWÓJKOWY SYSTEM LICZBOWY Do zapisu dowolnej liczby system wykorzystuje dwa symbole (cyfry): 0, 1 Dowolną liczbę w systemie dwójkowym możemy przedstawić jako następująca sumę: (a n-1...a 1 a 0 ) B = a n-1 *2 (n-1) +...+ a 1 *2 1 + a 0 *2 0 = gdzie: i - numer pozycji w liczbie, a i - dowolna z cyfr (0 lub 1), n - ilość cyfr (pozycji) w liczbie n 1 i= 0 a i 2 i Przykład: 10100 B = 1*2 4 + 0*2 3 + 1*2 2 + 0*2 1 + 0*2 0 2
HEKSADECYMALNY (SZESNASTKOWY) SYSTEM LICZBOWY Do zapisu dowolnej liczby system wykorzystuje szesnaście symboli (cyfr i liter): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F Dowolną liczbę w systemie heksadecymalnym możemy przedstawić jako następująca sumę: (a n-1...a 1 a 0 ) H = a n-1 *16 (n-1) +...+ a 1 *16 1 + a 0 *16 0 = gdzie: i - numer pozycji w liczbie, a i - dowolna cyfra heksadecymalna, n - ilość cyfr (pozycji) w liczbie n 1 i= 0 a i 16 i Przykład: 1C2 H = 1*16 2 + C*16 1 + 2*16 0 Bardzo łatwa konwersja pomiędzy zapisem dwójkowym i szestnastkowym: 7AAAAA HH = 0111 1010 1100 0011 3
INFORMACJA CYFROWA W słowach cyfrowych wyróżnia się najstarszą i najmłodszą pozycję, tj. bit najbardziej znaczący zwany najstarszym (ang. MSB - Most Significant Bit) oraz bit najmniej znaczący zwany najmłodszym (ang. LSB - Least Significant Bit) a n-1... a 0 MSB LSB Analogicznie możemy mówić o starszym i najmłodszym bajcie lub o starszej lub młodszej tetradzie 4
KODOWANIE Kodowaniem nazywamy przyporządkowanie poszczególnym obiektom zbioru kodowanego odpowiadających im elementów zwanych słowami kodowymi, przy czym każdemu słowu kodowemu musi odpowiadać dokładnie jeden element kodowany B A 100 111 010 C Zbiorem kodowanym może być zbiór dowolnych obiektów (cyfr, liter, symboli graficznych, stanów logicznych, poleceń do wykonania itp.) Proces kodowania może być opisem słownym, wzorem (zależnością matematyczną), tabelą kodową itp. 001 Kodem liczbowym nazywamy taki kod, który liczbom dowolnego systemu będzie przyporządkowywał słowa kodowe w postaci zero-jedynkowej (binarnej) 5
KODOWANIE LICZB I TEKSTÓW Kody binarne kod naturalny NKB kod BCD kod Gray a inne kody Kodowanie znaków (tekstów) 2 6
NATURALNY KOD BINARNY (NKB) Jeżeli dowolnej liczbie dziesiętnej przyporządkujemy odpowiadająca jej liczbę binarną, to otrzymamy naturalny kod binarny (NKB) Minimalna długość k słowa binarnego reprezentującego liczbę dziesiętną A musi spełniać warunek: A 2 k 2A + 1 Oznacza to, że aby zakodować liczbę dziesiętną w zakresie 0-15 wystarczy wykorzystać jedną tetradę (długość słowa kodowego k=4) gdyż 15 2 4 31 NKB 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 10 1010 11 1011 12 1100 13 1101 14 1110 15 1111 7
KOD PROSTY BCD Gdy w systemie wygodnie jest operować liczbami dziesiętnymi stosowany jest kod BCD. Liczba terad kodu BCD jest bowiem równa liczbie pozycji dziesiętnych reprezentowanej liczby. Np. dziesiętna liczba 6-pozycyjna (000000-999999) jest kodowana na 24 bitach Konstrukcja: każdej cyfrze dziesiętnej przyporządkowujemy czterocyfrową liczbę dwójkową w kodzie NKB *) ; słowo kodowe w kodzie prostym BCD otrzymujemy zapisując każdą cyfrę liczby dziesiętnej w postaci tetrady binarnej 463 D = 0100 0110 0011 BCD 67 D = 0110 0111 BCD 8
KOD GRAY A Kod Gray a to taki kod, którego kolejne słowa różnią się tylko na jednej pozycji Kod Gray a tworzy się z kodu naturalnego NKB biorąc pod uwagę: g g g n n 1 n 2 = b = b = b n n 1 n 2 b n b n 1 NKB Kod Gray a 000 000 001 001 010 011 011 010 100 110 101 111 110 101 111 100 9
INNE KODY BINARNE NKB BCD Kod Gray a 1 z 10 Johnsona 0 0000 0000 0000 0000000001 00000 1 0001 0001 0001 0000000010 00001 2 0010 0010 0011 0000000100 00011 3 0011 0011 0010 0000001000 00111 4 0100 0100 0110 0000010000 01111 5 0101 0101 0111 0000100000 11111 6 0110 0110 0101 0001000000 11110 7 0111 0111 0100 0010000000 11100 8 1000 1000 1100 0100000000 11000 9 1001 1001 1101 1000000000 10000 Długość słowa kodu 1 z n (w tabeli 1 z 10 ) jest równa n, tj. liczności zbioru kodowanego (liczbie kodowanych słów) Kod 5-bitowy stosowany do kodowania cyfr dziesiętnych Są to kody nadmiarowe (redundancyjne), w których liczba pozycji binarnych jest większa niż wynika to z ogólnej zależności A 2 k 2A + 1 Redundancję można wykorzystać do zwiększenia niezawodności operacji wykonywanych na liczbach 10
KODOWANIE ZNAKÓW Początki: Harald C. M. Morse (kropka - kreska -...); Anatol de Baudot (dalekopis); w pierwszych maszynach cyfrowych - kod dalekopisowy 5-bitowy, a potem 8-bitowy (EBCDIC); W 1977 roku kiedy to ANSI (American National Standards Institute) zatwierdził kod ASCII (The American Standard Code for Information Interchange). Jest to 7-bitowy kod (8 bit do kontroli parzystości), definiujący 128-elementowy zestaw znaków (character set) o wartościach kodowych od 0 do 127. Zestaw zawiera litery łacińskie (duże i małe), cyfry i znaki interpunkcji oraz różne znaki specjalne. Międzynarodowa Organizacja Standaryzacji - ISO, nadała amerykańskiemu systemowi kodowania status standardu międzynarodowego oznaczonego jako ISO 646. Kod ASCII rozszerzony wprowadza dodatkowe 128 znaków wykorzystując mało używany bit parzystości: IBM wprowadza Code Page 474 dla USA Code Page 852 dla Europy Wschodniej 11
KODOWANIE ZNAKÓW kod ASCII 8 Bit kontroli parzystości Numery bitów słowa 7 0 0 0 0 1 1 1 1 6 0 0 1 1 0 0 1 1 5 0 1 0 1 0 1 0 1 4 3 2 1 0 0 0 0 NUL DEL SP 0 @ P p 0 0 0 1 SOH DC1! 1 A Q a q 0 0 1 0 STX DC2 2 B R b r 0 0 1 1 ETX DC3 3 C S c s 0 1 0 0 EOT DC4 $ 4 D T d t 0 1 0 1 ENQ NAK % 5 E U e u 0 1 1 0 ACK SYN & 6 F V f v 0 1 1 1 BEL ETB ` 7 G W g w 1 0 0 0 BS CAN ( 8 H X h x 1 0 0 1 HT EM ) 9 I Y i y 1 0 1 0 LF SUB * : J Z j z 1 0 1 1 VT ESC + ; K [ k { 1 1 0 0 FF FS, < L \ l 1 1 0 1 CR GS - = M ] m } 1 1 1 0 SO RS. > N n ~ 1 1 1 1 SI US /? O o DEL 12
Dodawanie i odejmowanie (schemat blokowy) 13
Mnożenie Liczby dodatnie Mnożenie Można usprawnić operację mnożenia: możemy wykonywać bieżące dodawanie iloczynów cząstkowych, eliminuje to potrzebę przechowywania iloczynów cząstkowych, potrzeba mniej rejestrów. 14
Mnożenie liczb binarnych (schemat blokowy) 1) Mnożna i mnożnik ładowane są do rejestrów Q i M - Rejest A początkowo ustawiony na 0 - Rejest Q 1-bitowy początkowo ustawiony na 0 - Układ sterowania odczytuje mnożnik bit po bicie - Jeśli Q 0 =1 to mnożna jest dodawana do zawartości A i wynik pozostaje w A wszystkie bity rejestrów C, A i Q przesuwane są o jeden bit w prawo tzn.: C A n-1 A0 Qn-1, bit Q 0 jest tracony Jeśli Q 0 =0 to nie jest wykonywane dodawanie, a jedynie przesunięcie w prawo - Proces jest powtarzany dla każdego bitu orginalnego mnożnika - Iloczyn znajduje się w A, Q. 15
Mnożenie liczb binarnych 16
Mnożenie liczb binarnych (flow diagram) Beznakowe liczby całkowite 17
Mnożenie w notacji uzupełnienia do dwóch - algorytm Botha Rejestr Q - mnożnik Rejestr M mnożna Rejster Q -1 jednobitowy umieszczone logicznie na prawo od najmniej znaczącego bitu Q 0 rejestru Q Przesuniecie arytmetyczne w prawo: bit A n-1 przesuwamy do A n-2, ale także pozostaje w A n-1 (jest zachowany bit znaku) 18
Dzielenie liczb binarnych bez znaku Dzielnik Bity dzielnej są badane od lewej do prawej, aż zespół bitów będzie reprezentował liczbę większą lub równą dzielnikowi Aż do wystąpienia tego zdarzenia w ilorazie umieszczane są zera od lewej do prawej Gdy wystąpi już to zdarzenie to w ilorazie umieszczamy jedynkę Dzielnik jest odejmowany od dzielnej cząstkowej. Wynik jest określany jako reszta cząstkowa Począwszy od tego punktu dzielenie powtarza się cyklicznie W każdym cyklu dodatkowe bity dzielnej są dołączane do reszty cząstkowej, aż wynik będzie większy lub równy dzielnikowi. Proces ten jest kontynuowany aż wszystkie bity dzielnej zostaną zużyte. 19
Algorytm dzielenia liczb binarnych bez znaku 20
Algorytm dzielenia liczb binarnych w reprezentacji uzupełnienia do dwóch 1. załaduj dzielnik do rejestru M, a dzielną do rejestrów A i Q. np. 4 bitowa liczba 0111 0000 0111 1001 1111 1001 2. przesuń A i Q w lewo o jedną pozycję bitową 3. jeśli M i A mają takie same znaki to A A- M, przeciwnym razie A A + M 4. powyższa operacja jest udana jeśli znak A pozostaje taki sam po zakończeniu operacji a) jeśli operacja jest udana lub (A=0 i Q=0) to ustaw Q 0 1 b) Jeśli operacja jest nieudana i (A 0 lub Q 0) to ustaw Q 0 0 i przywróć poprzednią wartość A 5. powtórz kroki od 2 do 4 tyle razy ile jest pozycji bitowych w Q 6. reszta jest zawarta w A. Jeśli znaki dzielnika i dzielnej były takie same to iloraz jest w Q. W przeciwnym razie iloraz jest odwrotnością zawartości rejestru Q 21
Algorytm dzielenia liczb binarnych w reprezentacji uzupełnienia do dwóch A Q 1111 1001 wartość początkowa 1111 0010 przesunięcie w lewo 0010 dodawanie 1111 0010 przywrócenie 1110 0100 przesunięcie w lewo 0001 dodawanie 1110 0100 przywrócenie 1100 1000 przesunięcie w lewo 1111 dodawanie 1111 1001 ustawienie Q 0 =1 1111 0010 przesunięcie w lewo 0010 dodawanie 1111 0010 przywrocenie Przykład: (-7) : 3 = -2 i reszta -1 ( 1001 : 0011 M) razie iloraz jest odwrotnością zawartości rejestru Q 1101 + 1 -------- 1110 = -2 Reszta 1111 =-1 22