Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
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ę: (an-1...a1a0)(10) = an-1*10(n-1) +...+ a1*101 + a0*100 = gdzie: i - numer pozycji w liczbie, ai - dowolna z cyfr od 0 do 9, n - ilość cyfr (pozycji) w liczbie Przykład: 424(10) = 4*102 + 2*101 + 4*100
pozycja jedynek (0)
pozycja dziesiątek (1)
pozycja setek (2)
∑−
=
∗1n
0i
ii 10a
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ę: (an-1...a1a0)B = an-1*2(n-1) +...+ a1*21 + a0*20 = gdzie: i - numer pozycji w liczbie, ai - dowolna z cyfr (0 lub 1), n - ilość cyfr (pozycji) w liczbie Przykład:
10100B = 1*24 + 0*23 + 1*22 + 0*21 + 0*20
∑−
=
∗1n
0i
ii 2a
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ę:
(an-1...a1a0)H = an-1*16(n-1) +...+ a1*161 + a0*160 = gdzie: i - numer pozycji w liczbie, ai - dowolna cyfra heksadecymalna, n - ilość cyfr (pozycji) w liczbie Przykład:
1C2H = 1*162 + C*161 + 2*160 Bardzo łatwa konwersja pomiędzy zapisem dwójkowym i szestnastkowym:
∑−
=
∗1n
0i
ii 16a
7𝐴𝐴𝐴𝐴𝐴𝐻𝐻 = 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)
an-1 ......................... a0
MSB LSB
Analogicznie możemy mówić o starszym i najmłodszym bajcie lub o starszej lub młodszej tetradzie
4
KODOWANIE
Zbiorem kodowanym może być zbiór dowolnych obiektów (cyfr, liter, symboli graficznych, stanów logicznych, poleceń do wykonania itp.)
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
A
B
C
010
111 100
001 Proces kodowania może być opisem słownym, wzorem (zależnością matematyczną), tabelą kodową itp.
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:
12A2A k +〈〈Oznacza to, że aby zakodować liczbę dziesiętną w zakresie 0-15 wystarczy wykorzystać jedną tetradę (długość słowa kodowego k=4) gdyż
31215 4 〈〈NKB
0 00001 00012 00103 00114 01005 01016 01107 01118 10009 1001
10 101011 101112 110013 110114 111015 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
463D = 0100’0110’0011BCD 67D = 0110’0111BCD
8
KOD GRAY’A
Kod Gray’a tworzy się z kodu naturalnego NKB biorąc pod uwagę:
Kod Gray’a to taki kod, którego kolejne słowa różnią się tylko na jednej pozycji
1n2n2n
n1n1n
nn
bbgbbg
bg
−−−
−−
⊕=⊕=
=
NKB Kod Gray’a000 000001 001010 011011 010100 110101 111110 101111 100
9
INNE KODY BINARNE
NKB BCD Kod Gray’a 1 z 10 Johnsona0 0000 0000 0000 0000000001 000001 0001 0001 0001 0000000010 000012 0010 0010 0011 0000000100 000113 0011 0011 0010 0000001000 001114 0100 0100 0110 0000010000 011115 0101 0101 0111 0000100000 111116 0110 0110 0101 0001000000 111107 0111 0111 0100 0010000000 111008 1000 1000 1100 0100000000 110009 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 Redundancję można wykorzystać do zwiększenia niezawodności operacji wykonywanych na liczbach
12A2A k +〈〈
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
8 Bit kontroli parzystości7 0 0 0 0 1 1 1 16 0 0 1 1 0 0 1 1
Numery bitów słowa
5 0 1 0 1 0 1 0 14 3 2 10 0 0 0 NUL DEL SP 0 @ P ‘ p0 0 0 1 SOH DC1 ! 1 A Q a q0 0 1 0 STX DC2 „ 2 B R b r0 0 1 1 ETX DC3 ≠ 3 C S c s0 1 0 0 EOT DC4 $ 4 D T d t0 1 0 1 ENQ NAK % 5 E U e u0 1 1 0 ACK SYN & 6 F V f v0 1 1 1 BEL ETB ` 7 G W g w1 0 0 0 BS CAN ( 8 H X h x1 0 0 1 HT EM ) 9 I Y i y1 0 1 0 LF SUB * : J Z j z1 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
KODOWANIE ZNAKÓW kod ASCII
12
Dodawanie i odejmowanie (schemat blokowy)
13
14
Mnożenie Mnożenie
Mnożenie Liczby dodatnie
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.
Mnożenie liczb binarnych (schemat blokowy)
15
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 Q0=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 → An-1 … A0 → Qn-1 , bit Q0 jest tracony
Jeśli Q0=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.
16
Mnożenie liczb binarnych
Mnożenie liczb binarnych (flow diagram)
Beznakowe liczby całkowite
17
Mnożenie w notacji uzupełnienia do dwóch - algorytm Botha
18
Rejestr Q - mnożnik Rejestr M – mnożna Rejster Q-1 jednobitowy umieszczone logicznie na prawo od najmniej znaczącego bitu Q0 rejestru Q
Przesuniecie arytmetyczne w prawo: bit An-1 przesuwamy do An-2, ale także pozostaje w An-1 (jest zachowany bit znaku)
Dzielenie liczb binarnych bez znaku
• 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
Dzielnik
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 Q0 ← 1 b) Jeśli operacja jest nieudana i (A ≠ 0 lub Q ≠ 0) to ustaw Q0 ← 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
Przykład: (-7) : 3 = -2 i reszta -1 ( 1001 : 0011 → M)
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 Q0 =1
1111 0010 przesunięcie w lewo
0010 dodawanie
1111 0010 przywrocenie
razie iloraz jest odwrotnością zawartości rejestru Q 1101 + 1 -------- 1110 = -2 Reszta 1111 =-1 22
Slajd numer 1Slajd numer 2Slajd numer 3Slajd numer 4Slajd numer 5Slajd numer 6Slajd numer 7Slajd numer 8Slajd numer 9Slajd numer 10Slajd numer 11Slajd numer 12Slajd numer 13Slajd numer 14Slajd numer 15Slajd numer 16Slajd numer 17Slajd numer 18Slajd numer 19Slajd numer 20Slajd numer 21Slajd numer 22