You are on page 1of 7

Predavanje 3

Kodovi i kodiranje

Kôd predstavlja skup pravila i simbola kojima se informacija prevodi iz jedne forme u drugu.
Pamćenje informacija i aritmetičko-logičke operacije u digitalnim sistemima vrše se pomoću
nula i jedinica. S druge strane, najčešće se zahteva da ulaz i izlaz budu u decimalnom brojnom
sistemu ili u obliku alfanumeričkih karaktera. Za konverziju podataka u računarskoj tehnici i
digitalnoj elektronici koriste se kodovi.

3.1 Binarno decimalni kod


U decimalnom brojnom sistemu postoji 10 cifara i za njihovu binarnu reprezentaciju neophodno
je 4 bita. 4 bita omogućavaju razlikovanje 16 simbola tako da oni pružaju odgovarajuću redun-
dansu u kreiranju binarno decimalnih kodova - BCD (Binary Coded Decimal).

3.1.1 Prirodni binarno decimalni kod


Prirodni binarno decimalni kod - NBCD (Natural Binary Coded Decimal) je binarno decimalni
kod koji se najčešće koristi u praksi [15], na primer u kalkulatorima. Kod NBCD koda svaka
cifra decimalnog brojnog sistema kodira se pomoću broja ekvivalentne vrednosti zapisanog u
binarnom brojnom sistemu (tabela 3.1). Svaka dekada u decimalnom broju sadrži jedan nibl u
NBCD kodu. Na primer broj 458(10) se u NBCD kodnom sistemu predstavlja na sledeći način:

458(10) = 0100 0101 1000N BCD

Težina cifara sleva nadesno u NBCD kodu je: 8, 4, 2, 1, pa se ovaj kod naziva i BCD kod 8421.

Izvršavanje aritmetičkih operacija pomoću NBCD brojeva značajno je otežano u odnosu na


njihovo izvršavanje pomoću brojeva u binarnom brojnom sistemu, pa su se ovi kodovi zadržali
samo kod ulazno-izlaznih uredaja [14]. Tipičan primer je sedmosegmentni displej. Dakle, neo-
phodno je izvšiti konverziju brojeva iz NBCD koda u binarni brojni sistem u obrnuto.

Tabela 3.1: NBCD kod

dec. cifra 0 1 2 3 4 5 6 7 8 9
NBCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001

18
Ž. Jakovljević, Automatizacija proizvodnje - izvodi sa predavanja 19

Konverzija brojeva iz NBCD koda u binarni brojni sistem


Najpoznatiji algoritam za prevodenje NBCD brojeva u binarni brojni sistem je algoritam po-
meranja sa oduzimanjem. Algoritam se sastoji iz sledećih koraka [14]:

KORAK 1: Pomeranje NBCD udesno za jedan bit;

KORAK 2: Ako su pomereni svi bitovi NBCD broja, onda je kraj;

KORAK 3: Bit koji izlazi izvan granice NBCD broja je bit binarnog broja;

KORAK 4: Ako je vrednost binarnog broja po NBCD dekadama veća ili jednaka 8, onda se
od nibla u datoj dekadi oduzima 3;

KORAK 5: Povratak na korak 1.

Primer 3.1.1 Izvršiti konverziju broja 0100 0101 1000(N BCD) iz NBCD koda u binarni brojni
sistem
100 10 1
0100 0101 1000
010 0010 1100 0 pomeranje
010 0010 1001 oduzimanje 3
01 0001 0100 10 pomeranje
0 1000 1010 010 pomeranje
0 0101 0111 oduzimanje 3
0010 1011 1010 pomeranje
0010 1000 oduzimanje 3
001 0100 01010 pomeranje
00 1010 001010 pomeranje
00 0111 oduzimanje 3
0 0011 1001010 pomeranje
0001 11001010 pomeranje
000 111001010 pomeranje

458(10) = 0100 0101 1000N BCD = 111001010(2)

Konverzija brojeva iz binarnog brojnog sistema u NBCD kod


Analogno prethodnom, algoritam za prevodenje iz binarnog brojnog sistema u NBCD format
zasnovan je na pomeranju ulevo i dodavanju. Sastoji se od sledećih koraka [14]:

KORAK 1: Pomeranje broja u binarnom sistemu ulevo za jedan bit;

KORAK 2: Ako su pomereni svi bitovi broja u binarnom sistemu, onda je kraj;

KORAK 3: Bit koji izlazi izvan granice broja u binarnom sistemu je bit broja u NBCD kodu;

KORAK 4: Ako je binarna vrednost bilo koje od NBCD dekada veća ili jednaka 5, onda se toj
dekadi dodaje 3;

KORAK 5: Povratak na korak 1.

Primer 3.1.2 Izvršiti konverziju broja 111001010(2) iz binarnog brojnog sistema u NBCD kod
Ž. Jakovljević, Automatizacija proizvodnje - izvodi sa predavanja 20

Tabela 3.2: Značajniji BCD kodovi [14, 16]

decimalna NBCD BCD BCD XS-3 BCD


cifra 8421 4221 2421 Stibitz 84-2-1
0 0000 0000 0000 0011 0000
1 0001 0001 0001 0100 0111
2 0010 0010 0010 0101 0110
3 0011 0011 0011 0110 0101
4 0100 1000 0100 0111 0100
5 0101 0111 1011 1000 1011
6 0110 1100 1100 1001 1010
7 0111 1101 1101 1010 1001
8 1000 1110 1110 1011 1000
9 1001 1111 1111 1100 1111

100 10 1
111001010
1 11001010 pomeranje
11 1001010 pomeranje
111 001010 pomeranje
1010 001010 dodaj 3
1 0100 01010 pomeranje
10 1000 1010 pomeranje
10 1011 1010 dodaj 3
101 0111 010 pomeranje
1000 1010 010 dodaj 3
1 0001 0100 10 pomeranje
10 0010 1001 0 pomeranje
10 0010 1100 0 dodaj 3
0100 0101 1000 pomeranje

111001010(2) = 0100 0101 1000N BCD

3.1.2 Ostali binarno decimalni kodovi


Pošto postoji redundansa u broju bitova u BCD kodu u odnosu na broj cifara u decimalnom
brojnom sistemu, onda se pojedinim bitovima mogu davati različiti težinski faktori i tako kre-
irati različiti BCD kodovi. U tabeli 3.2. dat je pregled značajnijih BCD kodova.

BCD 4221 (Aiken), BCD 2421 i BCD 84-2-1 pripadaju grupi težinskih kodova, s tim što su
ovde težine koje se daju pojedinim bitovima različite u odnosu na NBCD kod. XS-3 (Excess-3),
poznat i kao Stibitz kod nije težinski kod, a zasnovan je na pravilu da se cifri u decimalnom
sistemu doda 3, a zatim se kodira NBCD kodom. Kodovi Aiken, XS-3 i BCD 84-2-1 imaju svoj-
stvo samokomplementarnosti [16]. Ovo znači da su kodovi za cifre 0, 1, 2, 3 i 4 komplementarni
kodovima za cifre 9, 8, 7, 6 i 5, respektivno.
Ž. Jakovljević, Automatizacija proizvodnje - izvodi sa predavanja 21

Tabela 3.3: Četvorobitni Grejov kôd i Grejov BCD kôd

decimalna četvorobitni Grejov


vrednost Grejov kod BCD
0 0000 0000
1 0001 0001
2 0011 0011
3 0010 0010
4 0110 0110
5 0111 0111
6 0101 0101
7 0100 0100
8 1100 1100
9 1101 1000
10 1111
11 1110
12 1010
13 1011
14 1001
15 1000

3.2 Grejov kod


Grejov kôd spada u kodove sa jediničnim razmakom. Naime, kod BCD kodova moguće je da
se izmedu dve sukcesivne decimalne cifre promeni dva ili više bitova. Tipičan primer su NBCD
kodovi za cifre 7 i 8: 0111 i 1000. U nekim aplikacijama (na primer kod apsolutnih enkodera)
može doći do greške u očitavanju koja dalje može prouzrokovati veliku razliku u očitanoj i stvar-
noj vrednosti broja. Kod kodova sa jediničnim razmakom kôd dve susedne cifre se razlikuje
samo u jednom bitu. Četvorobitni Grejov kôd i Grejov BCD kôd prikazani su u tabeli 3.3.

Grejov kôd je cikičan kôd u smislu da je jedinični razmak ostvaren i izmedu prve i poslednje
cifre u decimalnom brojnom sistemu.

Grejov kôd je od izuzetnog značaja za minimizaciju kombinacionih i sekvencijalnih automata.


Kod četvorobitnog Grejovog koda postoji sledeća simetrija u ponavljanju binarnih cifara:

• u odnosu na osu izmedu 7 i 8 simetrično su rasporedena 3 poslednja bita dok su prvi


bitovi komplementarni;

• u odnosu na ose izmedu 3 i 4, 7 i 8 i 11 i 12 simetrično su rasporedene vrednosti poslednja


dva bita, a vrednosti trećeg bita su komplementarne;

• u odnosu na ose izmedu 1 i 2, 3 i 4, 5 i 6, 7 i 8, 9 i 10, 11 i 12, 13 i 14 i 15 i 0 simetrija


postoji kod poslednjih cifara.

Slično važi i za Grejove kodove sa drugim brojem bitova.


Ž. Jakovljević, Automatizacija proizvodnje - izvodi sa predavanja 22

3.2.1 Konverzija izmedu binarnog brojnog sistema i Grejovog koda


Neka je broj u binarnom brojnom sistemu reprezentovan na sledeći način:

N(2) = bn bn−1 bn−2 . . . b2 b1

a u Grejovom kodu sa:


N(G) = gn gn−1 gn−2 . . . g2 g1
Konverzija iz binarnog brojnog sistema u Grejov kod vrši se korišćenjem sledećeg pravila [15]:

gi = bi ⊕ bi+1

g n = bn
gde operacija ⊕ označava sabiranje po modulu 2, a primenjena na binarne cifre daje sledeće
rezultate: 0⊕0=0; 0⊕1=1; 1⊕0=1; 1⊕1=0.

Primer 3.2.1 Izvršiti konverziju broja 13(10) iz binarnog brojnog sistema u Grejov kod

N(2) = 1101
g 1 = b1 ⊕ b2 = 1 ⊕ 0 = 1
g 2 = b2 ⊕ b3 = 0 ⊕ 1 = 1
g 3 = b3 ⊕ b4 = 1 ⊕ 1 = 0
g 4 = b4 = 1
N(G) = 1011
Pravila za konverziju iz Grejovog koda u binarni brojni sistem su:

bn = g n

bi = bi+1 ⊕ gi

Primer 3.2.2 Izvršiti konverziju broja 13(10) iz Grejovog koda u binarni brojni sistem

N(G) = 1011
b4 = g 4 = 1
b3 = b4 ⊕ g 3 = 1 ⊕ 0 = 1
b2 = b3 ⊕ g 2 = 1 ⊕ 1 = 0
b1 = b2 ⊕ g 1 = 0 ⊕ 1 = 1
N(2) = 1101
Ž. Jakovljević, Automatizacija proizvodnje - izvodi sa predavanja 23

Tabela 3.4: ASCII kod [17]

Hex ASCII Hex ASCII Hex ASCII Hex ASCII


0 NUL 20 40 @ 60 ‘
1 SOH 21 ! 41 A 61 a
2 STX 22 ” 42 B 62 b
3 ETX 23 # 43 C 63 c
4 EOT 24 $ 44 D 64 d
5 ENQ 25 % 45 E 65 e
6 ACK 26 & 46 F 66 f
7 BEL 27 ’ 47 G 67 g
8 BS 28 ( 48 H 68 h
9 HT 29 ) 49 I 69 i
0A LF 2A * 4A J 6A j
0B VT 2B + 4B K 6B k
0C FF 2C , 4C L 6C l
0D CR 2D - 4D M 6D m
0E SO 2E . 4E N 6E n
0F SI 2F / 4F O 6F o
10 DLE 30 0 50 P 70 p
11 DC1 31 1 51 Q 71 q
12 DC2 32 2 52 R 72 r
13 DC3 33 3 53 S 73 s
14 DC4 34 4 54 T 74 t
15 NAK 35 5 55 U 75 u
16 SYN 36 6 56 V 76 v
17 ETB 37 7 57 W 77 w
18 CAN 38 8 58 X 78 x
19 EM 39 9 59 Y 79 y
1A SUB 3A : 5A Z 7A z
1B ESC 3B ; 5B [ 7B {
1C FS 3C < 5C \ 7C |
1D GS 3D = 5D ] 7D }
1E RS 3E > 5E ˆ 7E ˜
1F US 3F ? 5F 7F
Ž. Jakovljević, Automatizacija proizvodnje - izvodi sa predavanja 24

3.3 Alfanumerički kodovi


Do sada razmatrani kodovi koriste se za kodiranje numeričkih podataka. Medutim, pored
numeričkih, potrebno je kodirati i alfanumeričke podatke. Najpoznatiji kod za kodiranje alfa-
numeričkih podataka je ASCII (American Standard Code for Information Interchange) kod.
ASCII kod sadrži 7 bitova (128 kodova) za kodiranje cifara decimalnog sistema (0-9), velikih i
malih slova alfabeta (A-Z i a-z), odredenih interpunkcijskih (npr. ., ,, ;, :) i kontrolnih znakova
(npr. ESC, DEL). Tabela 3.4 sadrži ASCII kod. Vrednosti od 0(16) do 20(16) kao i 7F(16) se
odnose na kontrolne znakove, 30(16) do 39(16) su cifre decimalnog sistema, 41(16) do 5A(16) su
velika, a 61(16) do 7A(16) mala slova engleskog alfabeta.

Očigledno je da se ASCII kodom ne mogu kodirati slova azbuke niti sva slova abecede. Voden
potrebom za uvodenjem znakova prisutnih u azbukama različitih jezika (francuski, nemački,
ruski...) formiran je UNICODE skup karaktera čiji je cilj da omogući kodiranje svih slovnih
znakova koji se globalno koriste [18]. UNICODE je razvijen paralelno i unificiran sa UCS
(Universal Character Set - univerzalni skup karaktera) koji je definisan standardom ISO/IEC
10646. Za kodiranje UNICODE karaktera najčešće se koristi UTF-8 kodni sistem. Kodni
prostor UNICODE je u opsegu 0(16) do 10F F F F(16) i trenutno sadrži kodove za više od 110000
znakova [19].

You might also like