DZIESIĘTNY SYSTEM LICZBOWY

advertisement
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
n−1
i
a
∗
10
∑ i
i=0
Przykład:
424(10) = 4*102 + 2*101 + 4*100
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ę:
n−1
(an-1...a1a0)B = an-1
gdzie:
*2(n-1)
+...+ a1
*21
+ a0
*20 =
i - numer pozycji w liczbie,
ai - dowolna z cyfr (0 lub 1),
n - ilość cyfr (pozycji) w liczbie
i
∗
a
2
∑ i
i=0
Przykład:
10100B = 1*24 + 0*23 + 1*22 + 0*21 + 0*20
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
n−1
i
a
∗
16
∑ i
i=0
Przykład:
1C2H = 1*162 + C*161 + 2*160
Bardzo łatwa konwersja pomiędzy zapisem dwójkowym i szestnastkowym:
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
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
111
100
B
010
C
Zbiorem kodowanym
może być zbiór
dowolnych obiektów
(cyfr, liter, symboli
graficznych, stanów
logicznych, poleceń
do wykonania itp.)
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)
26
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⟨2k ⟨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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
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 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ę:
gn = bn
gn−1 = bn−1 ⊕ bn
gn−2 = bn−2 ⊕ bn−1
NKB
Kod Gray’a
000
001
010
011
100
101
110
111
000
001
011
010
110
111
101
100
9
INNE KODY BINARNE
0
1
2
3
4
5
6
7
8
9
NKB
BCD
Kod Gray’a
1 z 10
Johnsona
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
0000000001
0000000010
0000000100
0000001000
0000010000
0000100000
0001000000
0010000000
0100000000
1000000000
00000
00001
00011
00111
01111
11111
11110
11100
11000
10000
Długość słowa kodu „1 z n” (w tabeli „1 z 10”)
Kod 5-bitowy stosowany do
jest równa n, tj. liczności zbioru kodowanego
kodowania cyfr dziesiętnych
(liczbie kodowanych słów)
Są to kody nadmiarowe (redundancyjne), w których liczba pozycji binarnych jest
większa niż wynika to z ogólnej zależności
A⟨2k ⟨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
11
• Code Page 852 dla Europy Wschodniej
KODOWANIE ZNAKÓW
kod ASCII
Numery bitów słowa
4
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
3
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
2
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
8
7
6
5
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
0
0
0
0
1
NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
HT
LF
VT
FF
CR
SO
SI
DEL
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
Bit kontroli parzystości
1
0
0
1
0
0
1
1
0
1
0
1
1
1
0
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
↑
←
‘
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
SP
!
„
≠
$
%
&
`
(
)
*
+
,
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
1
1
1
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
DEL12
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 Q0=1 to mnożna jest dodawana
do zawartości A i wynik pozostaje
wA
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.
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 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)
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 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
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
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
Download