Digitalna tehnika Brojni sistemi Prof. Biljana Vidaković
Download
Report
Transcript Digitalna tehnika Brojni sistemi Prof. Biljana Vidaković
Digitalna tehnika
Brojni sistemi
Prof. Biljana Vidaković
Brojni sistemi
Brojni sistemi su sistemi simbola za označavanje skupova.
Za osnovu brojnog sistema može se uzeti bilo koji broj veći od 1.
Pored decimalnog brojnog sistema sa osnovom 10 (prirodni brojni sistem za
čovjeka) najpoznati brojni sistemi su:
binarni (b=2): {0, 1}
oktalni (b=8): {0, 1, 2, 3, 4, 5, 6, 7}
heksadecimalni. (b=16): {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D,
E, F}
U digitalnoj tehnici najpogodniji za primjenu je binarni brojni sistem sa
osnovom 2 koji predstavlja “prirodni” jezik računara.
Prednost binarnog brojnog sistema je jednostavnost tehničke realizacije i
pouzdanost.
Nedostatak binarnog brojnog sistema je znatno više cifarskih mjesta u
odnosu na decimalni brojni sistem.
Decimalni i binarni brojni sistemi
Decimalni brojni sistem ima deset različitih cifara 0,1,2,3,4,5,6,7,8,9 i
osnovu 10.
Svaka cifra ima zadatu težinu. Spada u pozicione brojne sisteme.
Opšti oblik broja u decimalnom brojnom sistemu:
A = an 10n + an-1 10n-1 + an-2 10n-2 +
+ a-210-2+ ...+ a-m10-m
...+ a1 101 + a0 100 + a-110-1
a – koeficijenti sa vrijednostima od 0-9
Opšti oblik za broj sa n cijelih i m razlomljenih mjesta:
A = an bn +
an-1 bn-1 + an-2 bn-2 + ...+ a1 b1 + a0 b0 + a-1b-1+ a-2b-2
+ ...+ a-mb-m
b – osnova (baza)
n+1 – broj cjelobrojnih cifara
m – broj decimala
Decimalni i binarni brojni sistemi
Binarni brojni sistem ima osnovu 2 i dvije cifre 0 i 1.
Svaka cifra ima zadatu težinu tj. spada u težinske brojne sisteme.
Opšti oblik broja u binarnom brojnom sistemu:
A = an 2n + an-1 2n-1 + an-2 2n-2 +
a-22-2+ ...+ a-m2-m
...+ a1 21 + a0 20 + a-12-1 +
a – koeficijenti sa vrijednostima od 0 i 1
Svaki član u nizu ima težinu dvostruko veću od prethodnog člana.
Decimalni i binarni brojni sistemi-primjeri
198410 = 1∙103 + 9∙102 + 8∙101 + 4∙100 =
1∙1000 + 9∙100 + 8∙10 + 4∙1 =
1000 + 900 + 80 + 4 = 1984
100112 = 1∙24 + 0∙23 + 0∙22 + 1∙21 + 1∙20 =
1∙16 + 0∙8 + 0∙4 + 1∙2 + 1∙1 = 16 + 2 + 1 = 19
12,310= 1∙101 + 2∙100 + 3∙10-1 =
1∙10 + 2∙1 + 3∙0,1 =
10+2+0,3 = 12,3
Oktalni i heksadecimalni brojni sistemi
Oktalni brojni sistem ima osnovu 8 i cifre 0,1,2,3,4,5,6 i 7.
Svaka cifra ima zadatu težinu tj. spada u težinske brojne sisteme.
Opšti oblik broja u oktalnom brojnom sistemu:
A = an 8n + an-1 8n-1 + an-2 8n-2 +
a-28-2+ ...+ a-m8-m
...+ a1 81 + a0 80 + a-18-1 +
a – koeficijenti sa vrijednostima od 0 do 7.
Oktalni brojevi manji od nule se vrlo rijetko upotrebljavaju.
Oktalni i heksadecimalni brojni sistemi
Heksadecimalni brojni sistem ima osnovu 16 i cifre 0,1,2,3,4,5,6,7,8,9 a za
veće brojeve koriste se slova A = 10
B = 11
C = 12
D = 13
E = 14
F = 15
Svaka cifra ima zadatu težinu tj. spada u težinske brojne sisteme.
Opšti oblik broja u oktalnom brojnom sistemu:
A = an 16n + an-1 16n-1 + an-2 16n-2 +
a-216-2+ ...+ a-m16-m
...+ a1 161 + a0 160 + a-116-1 +
a – koeficijenti sa vrijednostima od 0 do 9 i od A do F.
Heksadecimalni brojevi manji od nule se vrlo rijetko upotrebljavaju.
Primjer
Konverzije brojnih sistema
Opšta formula
cjelobrojni dio:
cjelobrojni dio (a) u novu bazu b:
a : b = r1 i ostatak o1
r1 : b = r2 i ostatak o2
r2 : b = r3 i ostatak o3
...
rn : b = 0 i ostatak on
---------------------------------rezultat: on ... o3 o2 o1
Konverzije brojnih sistema
Opšta formula
razlomljeni dio:
razlomljeni dio (a) u novu bazu b:
a ∙ b = c1,r1 tj. cjelobrojni dio c1 i razlomljeni dio r1
r1 ∙ b = c2,r2 tj. cjelobrojni dio c2 i razlomljeni dio r2
r2 ∙ b = c3,r3 tj. cjelobrojni dio c3 i razlomljeni dio r3
...
rn ∙ b = cn,0 tj. cjelobrojni dio cn i razlomljeni dio 0
-----------------------------------------Rezultat: c1 c2 ... cn
Problem: ako razlomljeni dio ne bude 0
Konverzija decimalnog broja u binarni i obrnuto
Broj 37,62510 konvertovati u binarni brojni sistem.
37 : 2 = 18 i ostatak 1
18 : 2 = 9 i ostatak 0
9 : 2 = 4 i ostatak 1
4 : 2 = 2 i ostatak 0
2 : 2 = 1 i ostatak 0
1 : 2 = 0 i ostatak 1
---------------------------------rezultat: 100101
Razlomljeni dio: 0,0625
0,625 ∙ 2 = 1,25 tj. cjelobrojni dio 1 i razlomljeni dio 0,25
0,25 ∙ 2 = 0,5 tj. cjelobrojni dio 0 i razlomljeni dio 0,5
0,5 ∙ 2 = 1,0 tj. cjelobrojni dio 1 i razlomljeni dio 0
----------------------rezultat: 101
Konačan rezultat: 100101,1012 dobije se spajanjem cjelobrojnog i
razlomljenog dijela
Konverzija decimalnog broja u binarni i obrnuto
(1101011,01)2 = 1 ∙ 26 + 1 ∙ 25 + 0 ∙ 24 + 1 ∙ 23 + 0 ∙ 22 + 1 ∙ 21 +
1 ∙ 20, + 0 ∙ 2-1 + 1 ∙ 2-2 =
64 + 32 + 0 + 8 + 0 + 2 + 1,0 + ¼ = (107,25)10
----------------------rezultat 107,2510
Konverzija binarnih brojeva u oktalne i obrnuto
Pošto je 8 = 23 znači da za jedan jednocifreni oktalni broj treba tri bita.
Binarni broj se dijeli u grupe po tri bita počevši od pozicionog zareza.
Primjer:
1101011011112 = 110 101 101 111 = 65578
6 5 5 7
----------------------
Oktalni broj se takođe jednostavno pretvara u binarni
Primjer:
701528 = 111 000 001 101 010 = 1110000011010102
7 0
1 5 2
-----------------------
Konverzija oktalnih brojeva u decimalne i obrnuto
Broj 64310 konvertovati u oktalni brojni sistem.
1
643
-512
=
131
-128
=
3
-0
=
3
-3
=
0
rezultat: 12038
1
83
2
82
0
81
3
80
2
0
3
Konverzija oktalnih brojeva u decimalne i obrnuto
Primjer
(1267)8 = 7 ∙ 80 = 7
+ 6 ∙ 81 = 48
+ 2 ∙ 82 = 128
+ 1 ∙ 83 = 512
------------69510
rezultat 69510
Konverzija binarnih brojeva u heksadecimalne i obrnuto
Pošto je 16 = 24 znači da za jedan jednocifreni heksadecimalni broj
trebaju četiri bita.
Binarni broj se dijeli u grupe po četiri bita počevši od pozicionog zareza.
Primjer:
10011010000111112 = 1001 1010 0001 1111
9
A
1
F
= 9A1F16
Heksadecimalni broj se takođe jednostavno pretvara u binarni
Primjer:
E6A216 = E
6
A
1110 0110 1010
2
0010
= 11100110101000102
Konverzija heksadecimalnih brojeva u decimalne i obrnuto
Primjer: Broj 701,62510 konvertovati u heksadecimalni brojni sistem.
701 : 16 = 43 i ostatak 13 D
43 : 16 = 2 i ostatak 11 B
2 : 16 = 0 i ostatak 2
---------------------------------rezultat: 2ED
Primjer: Broj 1E9B16 konvertovati u decimalni brojni sistem.
1
E 9 B 16
nulta cifra = B iz tabele
11
prva cifra = 9 iz tabele
144 cifra = E iz
druga
3584 + 4096
treća cifratabele
= 1 iz tabele
783510
heksadecimalni oktalni
Preko binarnog brojnog sistema.
Primjer:
A316 = 101000112
0101000112 = 2438
Računske operacije – binarni brojni sistem
Sabiranje:
Oduzimanje:
Računske operacije – binarni brojni sistem
Množenje:
Deljenje:
nulom nije dozvoljeno
jedinicom - trivijalno
Računske operacije – binarni brojni sistem
11
+11
--110
110
-101
--001
110 x 11
-------110
+ 110
----------10010
1001 : 11 = 11
---100
-011
----0011
-0011
-----0000
Računske operacije – oktalni brojni sistem
447
+652
---1321
54,3
-45,4
---6,7
123 x 21
-------123
+ 246
----------2603
2603 : 21 = 123
---26
-21
---50
-42
---63
-63
----0
Računske operacije – heksadecimalni
brojni sistem
127
+1AA
---2D1
2C
-25
---7
53 x 11
-------53
+ 53
----------583
1A0 x 13
-------4E0
+ 1A0
----------1EE0
583 : 11 = 53
---58
-55
---33
-33
---0
Predstavljanje cjelobrojnih brojeva
u računaru
Svaka memorijska ćelija u računaru ima 8 bitova – jedan
bajt.
u jedan bajt se može smjestiti broj u rasponu od 0 –
255
Ako je cjelobrojna vrijednost veća od 255, uzme se više
bajtova:
dva bajta – 16 bita: 0 – 65535
četiri bajta – 32 bita: 0 – 4.294.967.295
Predstavljanje negativnih brojeva
Preko znaka i apsolutne vrijednosti
komplikovan algoritam za sabiranje i oduzimanje
Preko komplementa
jednostavan algoritam za sabiranje i oduzimanje
Predstavljanje negativnih brojeva
komplementom
Potpuni komplement (u binarnom brojnom
sistemu se još zove i komplement dvojke).
Nepotpuni komplement (u binarnom brojnom
sistemu se još zove i komplement jedinice).
U oba sistema se poslednja cifra koristi za
znak broja (pozitivan ili negativan).
Potpuni komplement
broj x
n cifara
baza b
Potpuni omplement (x) = bn+1 – x
Potpuni komplement
Primjer:
znak!
x = 00102=210
n=3
b=2
Potpuni komplement (2) = 23+1 – 2 =
100002 – 00102 = 11102
znak!
Potpuni komplement
Primjer:
znak!
x = 11102=-210
n=3
b=2
Potpuni komplement (-2) = 23+1 – (-2) =
100002 – 11102 = 00102
znak!
Sabiranje sa potpunim komplementom
Pravilo:
A – B = A + Potpuni komplement(B) =
Rezultat + Prenos
Ako je Prenos = 1 onda je Rezultat korektan.
Ako je Prenos = 0 onda je rezultat negativan
(stvarni rezultat je potpuni komplement od
rezultata sa negativnim predznakom).
Primjer
01012 – 00102 = 01012 + 11102 = 100112
prenos
00012 – 00102 = 00012 + 11102 = 011112
prenos
Stvarni rezultat: - Potpuni komplement(11112) =
100002 – 11112 = - 000012
Prekoračenje (overflow)
Javlja se kada se prilikom sabiranja dva broja
dobije rezultat koji ne može da stane u zadati
broj bitova
Pravilo:
ako se prilikom sabiranja dva pozitivna ili dva
negativna broja dobije broj suprotnog znaka,
dogodilo se prekoračenje.
Primjer:
01012 + 01002 = 10012
10012 + 10102 = 100112
(5 + 4 = 9)
((-7)+(-6) = -13)
Nepotpuni komplement
broj x
n cifara
baza b
Nepotpuni komplement (x) = (bn+1 -1) – x
Nepotpuni komplement
Primjer:
znak!
x = 00102=210
n=3
b=2
Nepotpuni komplement (2) = (23+1 -1) – 2 =
(100002 – 00012)– 00102 = 11012
znak!
Nepotpuni komplement
Primjer:
znak!
x = 11012=-210
n=3
b=2
Nepotpuni komplement (-2) = (23+1 -1)– (-2) =
(100002 - 00012) – 11012 = 00102
znak!
Sabiranje sa nepotpunim komplementom
Pravilo:
A – B = A + Nepotpuni komplement(B) =
Rezultat + Prenos
Ako je Prenos = 1 onda je
konačan rezultat = rezultat bez prenosa + 1.
Ako je Prenos = 0 onda je rezultat negativan
(stvarni rezultat je nepotpuni komplement od
rezultata sa negativnim predznakom).
Primjer
01012 – 00102 = 01012 + 11012 = 1 00102
Pravi rezultat: 00102 + 1 = 00112
prenos
00012 – 00102 = 00012 + 11012 = 011102
prenos
Stvarni rezultat: - Nepotpuni komplement(11102) =
100002 – 00012 - 11102 = - 000012
Sračunavanje komplementa bez
oduzimanja!
Potpuni komplement: invertovati sve bitove i
dodati 1.
Primer: 00102 => 11012 + 1 = 11102
Nepotpuni komplement: invertovati sve
bitove.
Primer: 00102 => 11012
Predstavljanje cjelobrojnih brojeva
u računaru
Svaka memorijska ćelija u računaru ima 8 bitova – jedan bajt.
u jedan bajt se može smestiti broj u rasponu od:
0 – 255, neoznačen
-128 – 127, označen, u potpunom/nepotpunom komplementu
Ako je cjelobrojna vrednost veća od 128/255, uzme se više bajtova:
dva bajta – 16 bita:
0 – 65535, neoznačen
-32768 – 32767, označen, u potpunom/nepotpunom komplementu
četiri bajta – 32 bita:
0 – 4.294.967.295, neoznačen
-2.147.483.648 – 2.147.483.647, označen, u potpunom/nepotpunom
komplementu
Predstavljanje razlomljenih brojeva u
računaru
U nepokretnom zarezu
fiksna pozicija decimalnog zareza.
U pokretnom zarezu (floating point)
brojevi se predstavljaju u obliku: m ∙ be
m – mantisa
b – baza
e – eksponent
U memoriji računara se pamte mantisa i eksponent
kao cjelobrojne označene vrednosti, najčešće sa
bazom 2.
Pokretni zarez
Sabiranje odn. oduzimanje - prije sabiranja
(oduzimanja) brojevi se svedu na isti eksponent:
m1∙ be + m2 ∙ be = (m1 + m2) ∙ be
Množenje, odn. deljenje:
(m1∙ be1) ∙ (m2 ∙ be2) = (m1 ∙ m2) ∙ b(e1+e2)
Svođenje eksponenata na istu vrijednost se svodi
na smanjenje/povećanje eksponenta, uz
istovremeno dijeljenje/množenje mantise bazom
u računaru se dijeljenje/množenje matise bazom 2 svodi na
pomijeranje desno/lijevo bitova.
Pokretni zarez
Normalizovana mantisa: kada je
b-1 ≤ |m| ≤ 1
U praksi se normalizacija mantise svodi na zapis:
1,xxxx, gde se 1 podrazumijeva
Tada je preciznost najveća.
Pokretni zarez u računarnima, u nekim situacijama
nije dovoljno precizan!
razlog je taj što je baza 2, pa konverzija decimalnih brojeva
u oblik m ∙2e ne daje okrugao broj.
greška je veoma mala, ali se uzastopnim operacijama
može akumulirati.
Kodiranje alfanumeričkih informacija
Alfanumerički simboli:
numerički simboli (0, 1, ..., 9)
slovni simboli (A, B, ..., Z)
inteprunkcijski znakovi (, . ; : “ ...)
specijalni simboli (#, $, %, ...)
Standardi:
ASCII (American Standard Code for Information
Interchange)
ISO 8859-1
Windows CP 1250
Unicode
Kodovi za detekciju i korekciju grešaka
Koncentrisaćemo se na binarni brojni sistem.
Sve informacije će biti kodirane binarno!
Uzrok pojave grešaka.
Kodovi za detekciju grešaka
u stanju su da detektuju grešku, ali ne i da je
koriguju
Kodovi za korekciju grešaka
detekcija i korekcija grešaka
Kodovi za detekciju grešaka
Najjednostavnije je da se doda još jedan bit tako da ukupan broj
jedinica u poruci bude paran ili neparan.
Primer:
originalna poruka: 001101
sa dodatnim bitom (uk. br. jedinica paran):
0011011
sa greškom: 0001011
vidimo da je došlo do greške pošto je ukupan broj jedinica
neparan!
Greške od više od jednog bita mogu da prođu nedetektovane!
1111011
Karakter za provjeru bloka
b1 b2 b3 b4 p1
b5 b6 b7 b8 p2
p3 p4 p5 p6 p7
U slučaju greške od jednog bita bilo gdje, moguće je
detektovati i korigovati grešku:
b1 b2 b3 b4 p1
b5 b6 b7 b8 p2
p3 p4 p5 p6 p7
CRC kod
Cyclic Redundancy Character
Poruka se kao niz bitova dijeli sa nekim
unaprijed dogovorenim brojem, rezultat se
odbacuje a ostatak pri dijeljenju se doda uz
poruku.
Na prijemnoj strani se primljena poruka dijeli
istim brojem i ostatak se poredi sa primljenim
ostatkom.