kodiranje informacij

1
kodiranje_informacij_1_0.doc
Predstavitev informacije
Informacijo lahko prenašamo, če se nahaja v primerni obliki. V elektrotehniki se informacija lahko
nahaja v analogni ali digitalni obliki (analogni in digitalni signali).
Za analogno informacijo je značilno, da jo predstavlja signal, ki:
• se zvezno spreminja
• ima lahko neskončno število vrednosti (stanj), kar je tudi lastnost zveznih funkcij
Primeri:
osvetljenost okolice,
zvok kitare,
kazalec na merilniku hitrosti avtomobila npr. v vsakem trenutku daje (prikazuje) drugačno
velikost signala, ki pomeni drugačno vrednost
Digitalna ali diskretna informacija
je sestavljena iz končnega števila diskretnih, točno določenih stanj
Primeri:
zapis glasbe na digitalni plošči,
signalizacija na semaforju
prikaz časa na digitalni uri se npr. ne spreminja zvezno ampak v korakih (prikazi se
razlikujejo v sekundah ali desetinkah sekunde
Digitalno informacijo zapišemo z uporabo nabora veljavnih znakov, od katerih vsak
predstavlja črko ali digit
Primeri:
• s 25 črkami abecede lahko zapišemo 25 različnih stanj {A, B, C, ... , Ž)}
• z 10 števkami desetiškega številskega zapisa lahko predstavimo 10 različnih stanj {0, 1, 2,
... , 9}
• z dvema števkama dvojiškega številskega sestava pa lahko ponazorimo dve različni stanji
{0,1}
Več takih znakov povežemo v bolj obsežne informacije, npr.: črke abecede v besedo, števke v
večmestno število, itd., s čemer povečamo število stanj, ki jih predstavimo.
Zapis informacij v digitalnih računalnikih je praviloma binaren (dvojiški) z uporabo dveh stanj za
vsak signal.
Za vsako digitalno informacijo je značilno, da dolžina zapisa določa njeno natančnost.
Tako je npr. zapis z 8 biti manj natančen od zapisa s 16 biti.
Odločitev za digitalno informacijo je lahko posledica naslednjih lastnosti:
•
Digitalna informacija je naravna informacija, ko npr. gre za pritisk tipke, sklenitev
stikala, impulze iz detektorja delcev, itd.
2
•
kodiranje_informacij_1_0.doc
Informacijo tudi moramo imeti v digitalni obliki, če jo želimo obdelovati z digitalnimi
vezji (to je vezji, ki poznajo le logična stanja 1 in 0).
• Digitalna informacija je manj občutljiva na motnje pri prenosih na večje razdalje.
Digitalnemu računalniku ne moremo posredovati analogne informacije, ki nam jo posreduje večina
senzorjev fizikalnih veličin (npr. mikrofon) ampak jo moramo prej spremeniti v digitalno obliko.
To pomeni, da moramo zvezni signal čimbolj pogosto vzorčiti v časovni enoti (da se čimbolj
približamo zveznemu signalu) in njegovo vrednost ob vsakem vzorčenju spremenimo v digitalni
zapis (digitaliziramo). To vlogo opravljajo analogno-digitalni (A/D) pretvorniki.
Naprave, kot npr.: zvočnik pa ne morejo sprejeti digitalne informacije. Digitalno informacijo iz
računalnika najprej pretvorimo v analogno obliko s pomočjo digitalno-analognega pretvornika
(D/A) in tako spremenjeno posredujemo zvočniku.
Digitalno informacijo lahko predstavimo v obliki različnih zapisov, pravimo da informacijo
kodiramo, to je pretvorimo iz enega zapisa v drugega, iz ene abecede simbolov v drugo.
Najbolj preprost način zapisa in hkrati edini način, ki ga razume računalnik, je binarni zapis ali
dvojiški zapis.
Podatke, ukaze, naslove, znake, skratka vse zapišemo z zaporedjem ali nizom dvojiških cifer
(binary digit), ki jih imenujemo tudi bit-i.
Bit je najmanjša digitalna informacija, ki jo zapišemo kot 0 ali 1 (v elektrotehniki pa to pomeni
visok ali nizek napetostni nivo, velik ali majhen tok, sklenjeno ali razklenjeno stikalo, odprt ali
zaprt tranzistor-odvisno od dogovora tistih, ki to informacijo uporabljajo).
Boolova logika uporablja dve stanji:
neresnično (false) - logična "0"
resnično (true) - logična "1"
Večjo informacijo predstavimo tako, da nanizamo več bitov skupaj:
• Štiri bite združimo v četverko (nibble).
• Osem bitov skupaj predstavlja zlog (byte )- B. To je enota, s katero se srečujemo najbolj
pogosto in predstavlja osnovno enoto za izražanje zmogljivosti računalnikovega
pomnilnika in drugih lastnosti.
• Beseda (word) pa ni enoumno določena. Včasih obsega 8 bitov, 16 bitov ali 32 bitov. Pri
Intelu je beseda dolga 16 bitov.
• Dve besedi se združita v dvojno besedo (double word).
• Štiri besede (64 bitov) pa v četverno besedo (quad word).
• Še večja enota je KB (KiloByte), ki pomeni 1024 zlogov (ne 1000!) oziroma 210 zlogov
(osnova števila je 2!).
3
kodiranje_informacij_1_0.doc
• 1024 KB predstavlja 1MB (MegaByte) oziroma 220 zlogov = 1048576 B.
• 1024 MB pa predstavlja 1GB (GigaByte) oziroma 230 zlogov.
Zapis števil v pozicijskem številskem sestavu
Pozicijski zapis števil pomeni, da je število zapisano z več znaki (ciframi, števkami), vrednost
vsakega znaka pa je odvisna od njegove pozicije v številskem zapisu.
Vsako mesto ima torej določeno vrednost, ki ji pravimo utež.
N (B) = CN CN-1 ... C0, C-1 C-2 ... C-K
N ... število, ki ga želimo zapisati
B ... osnova (baza) številskega sestava
C ... cifra (števka) številskega sestava
Vrednost takega števila je:
N (B) = CN⋅BN + CN-1⋅BN-1 + ... + C1.B1 + C0⋅B0 + C-1⋅B-1 + C-2⋅B-2 + ... + C-K⋅B-K
digitalna tehnika večinoma uporablja za zapis:
dvojiški (binarni) sestav:
osmiški (oktalni) sestav:
šestnajstiški (heksadecimalni) sestav:
B, C, D, E, F}
B = 2, zaloga vrednosti {0, 1}
B = 8, zaloga vrednosti {0, 1, 2, 3, 4, 5, 6, 7}
B=16, zaloga vrednosti {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A,
Primer zapisa celega števila v dvojiškem številskem sestavu:
N (2) = 01101100(2)
•
•
•
•
•
bit 7 leži najbolj levo v zapisu in je največ vreden
bit 0 leži najbolj desno v zapisu in je najmanj vreden
vsako mesto (bit), ki se nahaja bolj levo, je vreden 2-krat več od desnega soseda
uteži posameznih mest v dvojiškem številskem sestavu so tako: 1, 2, 4, 8, 16, 32, ...
zaloga vrednosti predstavlja vse možne vrednosti, ki jih števke lahko zavzamejo, kar je v
binarnem zapisu 0 in 1
Desetiška vrednost takega zapisa je:
N (2) = 0⋅27 + 1⋅26 + 1⋅25 + 0⋅24 + 1⋅23 + 1⋅22 + 0⋅21 + 0⋅20
N (2) = 0⋅128 + 1⋅64 + 1⋅32 + 0⋅16 + 1⋅8 + 1⋅4 + 0⋅2 + 0⋅1 = 108(10)
Vidimo tudi, da vodilne ničle v zapisu ne povečujejo vrednosti števila, zato so nepomembne.
4
kodiranje_informacij_1_0.doc
Zapomnimo si:
V kateremkoli številskem sestavu je najnižje mesto pri zapisu celega števila vredno 1,
saj je: B0 = 1.
Maksimalno število, ki ga lahko zapišemo v en zlog, je: 11111111(2), kar pomeni desetiško vrednost
255, oziroma za eno manjšo vrednost od 256, ki bi jo dvojiško zapisali kot naslednjo vrednost v
obliki100000000(2).
Binarni zapis števil je najdaljši zapis, saj so uteži posameznih mest v tem zapisu vredne najmanj.
Zapis zaradi svoje dolžine tudi ni pregleden. V računalništvu pogosto uporabljamo šestnajstiški
(heksadecimalni) zapis, ki je krajši in bolj nazoren.
Zanj pa velja:
• vsako mesto, ki se nahaja bolj levo, je vredno 16-krat več od desnega soseda
• uteži posameznih mest v šestnajstiškeem številskem sestavu so tako: 1, 16, 256, 4096, ...
• zaloga vrednosti predstavlja vse možne vrednosti, ki jih števke lahko zavzamejo, kar je v
šestnajstiškem zapisu 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. S črkami zapišemo
vrednosti od 10 do 15.
Primer:
N(16) = A3F(16)
N(16) = 10⋅162 + 3⋅161 + 15⋅160
N(16) = 10⋅256 + 3⋅16 + 15⋅1 = 2623(10)
Zapis realnih števil s stalno vejico (fixed point):
Za zapis pozitivnih in negativnih števil s fiksno vejico (fixed point) je najbolj pogosta pozicijska
notacija, v kateri ima vejica fiksno mesto.
Levo od nje so števila, ki imajo težo Bi ( i >= 0), torej cele številke - večje od 1, desno pa števila s
težo Bi (i < 0), torej ulomki in manjši od 1 (negativne potence baze).
Pri tem zapisu je B osnova (baza) zapisa, i mesto števke glede na vejico, C pa števka številskega
sestava. Mesto vejice lahko določimo z dogovorom.
i= N
N (B) = CN CN-1 ... C0 , C-1 C-2 ... C-K =
∑
Ci ∗ Bi
i =− K
Primer zapisa:
N (2) = 01011001,10110000(2) (vejice ne pišemo, za mesto vejice se le dogovorimo!!!)
Vrednost takega števila v desetiškem sestavu določimo kot:
N (2) = 0⋅27 + 1⋅26 + 0⋅25 + 1⋅24 + 1⋅23 + 0⋅22 + 0⋅21 + 1⋅20+ 1⋅2-1 + 0⋅2-2 + 1⋅2-3 + 1⋅2-4
5
kodiranje_informacij_1_0.doc
N (2) = 0⋅128 + 1⋅64 + 0⋅32 + 1⋅16 + 1⋅8 + 0⋅4 + 0⋅2 + 1⋅1+ 1⋅0,5 + 0⋅0,25 + 1⋅0,125 +
+1⋅ 0,0625 = 89, 6875
Če so mesta levo od vejice (uteži) vredna 1, 2, 4, 8, ..., pa so mesta desno od vejice vredna 1/2, 1/4,
1/8, itd.
Primer pretvorbe:
Število 120,31 zapiši s 16 biti tako, da bo 8 bitov predstavljalo celi del števila, 8 bitov pa del desno
od vejice.
Ločeno pretvorimo celi del števila levo od vejice in ločeno del za vejico.
Eden od postopkov za pretvorbo je Hornerjev algoritem:
Pretvorba celega dela števila:
120
60
30
15
7
3
1
= 60*2 + 0
= 30*2 + 0
= 15*2 + 0
= 7*2 + 1
= 3*2 + 1
= 1*2 + 1
= 0*2 + 1
Števke preberemo od spodaj navzgor in
dobimo: 120(10) = 1111000(2)
Ker zahtevamo zapis celega dela z 8 biti, ta del zapišemo kot: 01111000(2).
Še pretvorba necelega dela:
0,31*2
0,62*2
0,24*2
0,48*2
0,96*2
0,92*2
0,84*2
0,68*2
=
=
=
=
=
=
=
=
0,62
1,24
0,48
0,96
1,92
1,84
1,68
1,36
→
→
→
→
→
→
→
→
0
1
0
0
1
1
1
1
Vsakič upoštevamo le celi del, neceli
del pa vzamemo naprej v postopek.
Števke preberemo od zgoraj navzdol in
dobimo: 0,31(10) = 0,01001111(2).
V celoti ima število v binarni obliki naslednjo obliko:
120,31(10) = 01111000,01001111(2).
Zapis predznačenih števil
Predznačena števila, ki obsegajo pozitivna in negativna števila lahko zapišemo na različne načine.
V rabi so predvsem trije načini zapisa:
1. z enostavnim dodajanjem bita za predznak
6
kodiranje_informacij_1_0.doc
2. z eniškim oz. dvojiškim komplementom
3. z odmikom
1. Predznačeni cološtevilski zapis z enostavnim dodajanjem predznaka
Dodajanje predznaka celemu nepredznačenemu številu je za nas najbolj enostaven način, ki pa je
najmanj v rabi, ker je pri računanju treba predznak ločiti od vrednosti. To pa je za aritmetična
vezja v računalniku zelo nepraktično.
Pri predznačenih številih imamo dve možnosti predznaka: + in -, kar lahko predstavimo z enim
dodatnim bitom, ki ga rezerviramo za predznak. Ta bit naj leži na najbolj vrednem mestu v
zapisu števila. Pri 8-bitnem številu je to bit b7, pri 16-bitnem bit b15, pri 32-bitnem b31, itd.
Bistvo tega zapisa je, da zapišemo število kot nepredznačeno in na najbolj vrednem bitu dodamo
predznak: 0, če je število pozitivno, in 1, če je število negativno.
Posledica uvedbe predznaka je, da sedaj v 8-bitno polje ne moremo več zapisati največje pozitivne
vrednosti 255, saj en bit zasede predznak, tako da za zapis velikosti števila ostane le še 7 bitov.
Največje pozitivno število, ki ga zapišemo v en zlog, je tako: 01111111(2) = 127(10)
Največje negativno število pa: 11111111(2) = -127(10)
Predznak se vedno nahaja na najbolj vrednem mestu, to je na osmem, šestnajstem, dvaintridesetem
bitu, itd.
2. Zapis predznačenih števil z eniškim in dvojiškim komplementom
Če smo v prejšnjem zapisu uporabljali predznak le kot dodatek in smo ga pri računanju morali
obravnavati ločeno od vrednosti same, pa je v tem zapisu predznak integriran v število in se tudi
pri aritmetičnih operacijah ne loči od vrednosti.
Kako dobimo eniški (enojni) komplement?
Tako, da vzamemo število in ga dopolnimo na vsakem digitu (števki) do njegove polne
vrednosti.
npr.:
74(10)
01001010(2)
4A(16)
------------ ali šestnajstiško: ------B5(16)
10110101(2)
=
7
kodiranje_informacij_1_0.doc
Prvotno število smo dopolnili tako, da smo števki dodali toliko, da smo dobili njeno maksimalno
vrednost. Na ta način smo poiskali k pozitivnemu številu ustrezno negativno število.
Na enak način lahko to opravimo v kateremkoli številskem kodnem zapisu kot je razvidno iz
gornjega primera (maksimalna števka v desetiškem zapisu je 9, v heksadecimalnem F, itd.).
Vendar se tudi eniški komplement ne uporablja dosti za računanje, ker ima to slabost, da imamo pri
uporabi z njim dve ničli: +0 = 0000 0000 in -0 = 1111 1111.
8
kodiranje_informacij_1_0.doc
Bolje se obnese dvojiški (dvojni) komplement. Tega dobimo preprosto tako, da eniškemu
komplementu prištejemo 1. Za zgornji primer bi dobili:
10110101(2)
+
1(2)
-------------10110110(2)
= -74(10)
Z uporabo dvojiškega komplementa bi izvedli odštevanje tako, da bi k številu, od katerega
odštevamo, prišteli dvojiški komplement števila, ki ga želimo odšteti. Odštevanje se tako prevede
na seštevanje.
Najbolj vredno mesto je rezervirano za predznak!
Primer:
Od števila 90(10) odštej 74(10)!
01011010(2)
01001010(2)
=
=
90(10)
74(10)
Dvojiški komplement k številu 74(10) smo izračunali že zgoraj, zato ga le še vključimo v izračun. K
številu 90(10) prištejemo dvojni komplement števila 74(10):
01011010(2)
=
90(10)
10110110(2)
=
-74(10)
-------------------------1 00010000(2)
=
16(10)
+
Dodatnega, 9-ega bita (prenosa) ne upoštevamo in ga odrežemo!
Zapis z dvojiškim (dvojnim) komplementom je zapis, ki ga običajno uporabljajo računalniki za
predstavitev negativnih števil in računanje z njimi.
Največja prednost zapisa z dvojiškim komplementom pa je v tem, da računalniku ni potrebno ločiti
predznaka od vrednosti ampak ju obravnava v izračunih kot celoto, pa tudi za vrednost 0 obstaja
ena sama koda.
Tudi za ta zapis je značilno da najbolj vreden bit predstavlja predznak (1 za negativno in 0 za
pozitivno število).
Seveda pa s predznačenim zapisom z osmimi biti ne moremo več zapisati števila 255(10), ampak le
127(10), zato pa imamo še navzdol za negativna števila možen zapis v podobnem obsegu.
9
kodiranje_informacij_1_0.doc
Števila zapisana z dvojiškim komplementom lahko predstavimo v obliki tabele takole:
0000 0100 4
0000 0011 3
0000 0010 2
0000 0001 1
-------------0000 0000 0
-------------1111 1111 -1
1111 1110 -2
1111 1101 -3
1111 1100 -4
pozitivna števila
negativna števila
3. Zapis predznačenih števil z odmikom
Če imamo na razpolago določen obseg nepredznačenih števil, ga lahko spremenimo v zapis
predznačenih števil z odmikom. Gre za to, da dejansko vrednost 0 pomaknemo na poljuben
zapis v tem obsegu. Vse vrednosti pod 0 predstavljajo negativna števila, nad 0 pa pozitivna.
Primer:
Za zapis števil imamo na razpolago 8 bitov. Kot vemo, lahko z 8 biti zapišemo števila od 0 do 255.
Če se odločimo, da bo obseg pozitivnih in negativnih števil enak, premaknemo dejansko vrednost 0
na sredino tega obsega.
binarna
koda
0000
0000
0000
0000
0000
0001
0010
0011
vrednost
nepredznačenega
števila
0
1
2
3
vrednost
predznačenega
števila
-128
-127
-126
-125
negativna števila
...
0111 1111
127
-1
-----------------------------1000 0000
128
0
-----------------------------1000 0001
129
1
...
1111 1101
1111 1110
1111 1111
pozitivna števila
253
254
255
125
126
127
Prednost zapisa z odmikom je v tem, da lahko pomaknemo izhodišče na poljubno mesto, s čemer
spreminjamo obseg pozitivnih in negativnih vrednosti, lahko simetrično ali pa bolj v eno ali
drugo smer. Na ta način lahko bolje izkoristimo bite, ki so na razpolago za zapis..
10
kodiranje_informacij_1_0.doc
Zapis števil z BCD kodo
Poleg običajnega dvojiškega zapisa uporabljamo še zapis BCD (Binary Coded Decimal). Kot že
ime pove, gre za binarni zapis decimalnih števil.
Kodiranje poteka tako, da vsako decimalno števko ločeno zapišemo s štirimi biti.
Primer:
137(10) = 0001 0011 0111(BCD)
pakiran BCD zapis
BCD zapis je idealen, če želimo ohraniti število v decimalni obliki.
BCD zapis slabo izkorišča razpoložljiv prostor v primeri z binarnim zapisom, saj vrednosti, ki bi
jih s štirimi binarnimi mesti še lahko izpisali (A, B, C, D, E in F) ostanejo neizrabljene.
BCD zapis pa lahko zavzame še več prostora, če vsako decimalno števko zapišemo z 8 biti.
Zgornji primer bi tako predstavili kot:
137(10) = 00000001 00000011 00000111(BCD)
nepakiran BCD zapis
Za računanje z BCD števili imajo procesorji vgrajene posebne ukaze, vendar dosti bolje podpirajo
čisti binarni zapis. Računanje v desetiški aritmetiki je počasnejše, pa tudi logična vezja za izvajanje
BCD aritmetike so bolj zapletena.
Zapis števil s premično (plavajočo) vejico - floating point
Ker zapis števil s fiksno vejico zelo omejuje zapis velikih, pa tudi zelo majhnih števil, se tak zapis
zelo malo uporablja.
V procesorjih se večinoma srečujemo z zapisom celih predznačenih števil (integer) ali pa realnih
števil (real), ki temelji na zapisu s pomično vejico. Osnova tega zapisa je zapis v znanstveni notaciji
(scientific notation) ali drugače povedano eksponentni zapis.
Zapis s plavajočo vejico omogoča zapis zelo velikih, pa tudi zapis zelo majhnih števil z istim
številom bitov, saj mesto vejice navidezno pomikamo s spreminjanjem vrednosti eksponenta.
Na ta način tudi bolje izkoristimo razpoložljiva mesta v zapisu.
Oblika zapisa:
m x Be
V tem zapisu pomeni: m mantiso (koeficient),
B bazo,
e eksponent
11
kodiranje_informacij_1_0.doc
S spreminjanjem vrednosti "e" se vejica premika vzdolž mantise levo ali desno, tako da "e" v bistvu
pove, na katerem mestu se nahaja vejica.
Na tak način lahko zapišemo binarna (B = 2), decimalna (B = 10) ali števila z drugačno osnovo.
Bistvo ideje je, da ima mantisa vejico vedno na določenem mestu, spreminja pa se eksponent.
Ponavadi imamo eno celo mesto, ostala mesta pa so namenjena za ulomek oz. necela mesta.
Taki obliki pravimo normalizirana oblika. Če temu ni tako, imamo denormalizirano obliko.
Primeri zapisov števil v decimalnem (desetiškem) zapisu s plavajočo vejico:
denormalizirana oblika
3,14159
0,007
1749,0
normalizirana oblika
3,14159 x 100
7,00000 x 10-3
1,74900 x 103
=
=
=
Na enak način predstavimo tudi binarna števila v obliki:
(+/-) 1,BBBB... BB x 2(+/-)ee...e
V tem zapisu so B in e binarne števke.
Uporablja se več vrst različnih zapisov v plavajoči vejici, od leta 1985 pa prevladuje zapis določen
z ANSI/IEEE standardom 754.
31 30
s
23 22
E
0
m
Slika prikazuje IEEE 32-bitni format zapisa števil s plavajočo vejico. Gre za enojno natančnost.
32-bitni format z enojno natančnostjo (single precision) vsebuje:
• s ... 1 bit, ki določa predznak (0 za + in 1 za -),
• E ... 8 bitov za eksponent,
• m ... 23 bitov za mantiso
Eksponent je zapisan z odmikom 127. To pomeni, da računalnik obravnava vrednost E kot
eksponent, ko od njega odšteje vrednost 127 (e = E - 127). Tako bi eksponent 0 zapisali kot 127, oz.
binarno kot 01111111. Tak način omogoča zapis eksponentov od -127 do +128.
Mantiso m lahko drugače zapišemo kot zaporedje bitov BBBB ... BB, pri čemer imajo posamezni
biti uteži: 2-1, 2-2, 2-3, ..., 2-22, 2-23.
Pravzaprav je prvi bit vedno 1, ker uporabljamo normalizirano vrednost mantise, zato tega bita
sploh ne pišemo ampak ga enostavno avtomatsko pripišemo. Prvi bit tudi ni zajet v delu mantise m,
ki je zapisana. Mantiso bi v celoti zapisali kot: 1,m.
12
kodiranje_informacij_1_0.doc
Mantisa s 23 biti zagotavlja 23 - bitno dvojiško oz. 7-mestno desetiško natančnost (224=16M)
Primer zapisa števila s premično vejico:
Zapiši število 197,625 v 32-bitnem formatu s plavajočo vejico.
Predznak je pozitiven, zato ima bit na mestu predznaka vrednost 0 (s= 0).
Pri pretvorbi števila 197,625 pretvorimo posebej celi del 197 in posebej decimalni del 0,625.
Tako je 197 = (12 * 16) + 5, torej C5(16), oziroma 1100 0101(2).
Izvedemo še pretvorbo decimalnega dela 0,625(10) v binarno obliko:
0,625*2 = 1,25 → 1
0,25*2 = 0,5 → 0
0,5 *2 = 1,0 → 1
Tako dobimo, da je: 0,625 = 0,101(2)
V celoti torej zapišemo število v binarni obliki s fiksno vejico kot: 1100 0101,101(2).
V zapisu s plavajočo vejico imamo obvezno obliko 1,m * 2e.
Preštejemo torej mesta, za katera moramo premakniti naše binarno število v desno, da bomo dobili
željeno obliko. Pomikov je 7, zato bo eksponent tudi 7. Če pa upoštevamo še obliko zapisa
eksponenta z odmikom, moramo prišteti še 127 oz. 7F(16) . E = 7 + 7F(16) = 86(16).
Ker prve enice v mantisi ne pišemo, je končni zapis po standardu 754:
predznak
197,625=
0
eksponent
normaliziran zapis mantise brez prve enice
10000110
10001011010000000000000
To je bil prikaz zapisa števila z enojno natančnostjo, z dvojno natančnostjo (double precision) pa
se zapiše število s 64 biti (8 zlogov) - za 4 bite se podaljša eksponent, ostali biti pa pripadejo
mantisi.
Natančnost zapisa števila je odvisna od števila bitov, ki jih uporabimo za zapis mantise.
13
kodiranje_informacij_1_0.doc
Velikost števila je odvisna od število bitov, ki jih uporabimo za zapis eksponenta.
Slika prikazuje numerične
podatkovne tipe Pentium-a
Tip
Primer tipov vseh
podatkov še enega
procesorja
Shortint
Integer
Longint
Byte
Word
Boolean
Real
Single
Double
Char
String
Velikost v
zlogih
1
2
4
1
2
1
6
4
8
1
256 ali manj
Interval
-128..127
-32768..32767
-2147483648..2147483647
0..255
0..65535
True or False
2.9e-39..1.7e38
1.5e-45..3.4e38
5.0e-324..1.7e308
1 znak
255 znakov
14
kodiranje_informacij_1_0.doc
Kodiranje znakov
Kodiranje znakov je standardizirano. Največ se uporabljajo ASCII, EBCDIC in UNICODE kodni
zapis.
ASCII abeceda (tabela)
ASCII zapis predstavlja mednarodni standardiziran kodni zapis za kodiranje števk, črk,
matematičnih in drugih simbolov ter krmilnih znakov.
ASCII tabela z znaki in ASCII kodami (American Standard Code for Information Interchange ) ima
8 stolpcev, v vsakem stolpcu pa je 16 vrstic oz. znakov, torej skupaj 128 znakov. Heksadecimalno
kodo znaka dobimo tako, da preberemo številko stolpca v katerem se znak nahaja, kar predstavlja
zgornje 4 bite, in pa številko vrstice, kar doda še spodnje 4 bite.
Prvi dve koloni (torej kode od 00 do 1F(16)) sta rezervirani za krmilne znake, npr.:
• pomik v novo vrstico: LF s kodo 0A(16);
• pomik na začetek vrstice: CR s kodo 0D(16);
• pisk: BELL s kodo 07(16);
• konec teksta: ETX s kodo 03(16):
• konec prenosa: EOT s kodo 04(16);
• znak NULL s kodo 00(16) za označevanje konca nizov;
Tretjo kolono pričenja znak za presledek med besedami (space) s kodo 20(16), zadnji znak v osmi
koloni pa je DEL s kodo 7F(16).
Številke od 0 do 9 se nahajajo v četrti koloni in imajo kode od 30(16) do 39(16). Sledijo si po vrsti,
tako, da lahko enostavno dobimo decimalno vrednost številke iz kode:
• vrednost = koda(16) - 30(16)
• ali pa še preprosteje, če zgornje 4 bite enostavno odrežemo
15
kodiranje_informacij_1_0.doc
V peti in šesti koloni se nahajajo velike črke abecede, tako da ima A kodo 41(16), nato pa kode
zaporedno naraščajo po abecednem vrstnem redu črk do Z, ki je zadnja.
Male črke imajo kode, ki so za 20(16) višje od ASCII kod za velike črke abecede, torej ležijo dva
stolpca više v tabeli: 'a' = 'A' + 20(16).
Zaradi take razvrstitve znakov je tudi enostavna primerjava znakov, sortiranja, pretvorbe, itd.
Prostor med števkami, in znaki abecede v tabeli je zapolnjen z ločili in drugimi znaki.
Kot primer kodiranja navajamo zapis sporočila:
Dan je lep!
44 61 6e 20 6a 65 20 6d 65 70 21
Ker računalnik operira z osmimi in ne s sedmimi biti, ima osmi bit v ASCII zapisu vrednost "0".
Če osmi bit postavimo na 1, omogoča vključitev dodatnih 128 znakov - razširjena (Extended)
ASCII tabela. Te dodatne kode so namenjene za zapis množice drugih simbolov kot: naglašeni
znaki, francoske, nemške, španske in grške črke ter grafični simboli.
Te razširjene kode niso del standardne ASCII tabele in se tudi spreminjajo glede na uporabnika.
Tako ima ANSI (American National Standards Institute) v svoji razširjeni tabeli namesto grafičnih
in grških simbolov več evropskih znakov z naglasom (Latin-I, ki je tudi ISO standard).
V našem okolju se srečujemo z naslednjimi kodnimi tabelami, ki vključujejo tudi šumnike:
YUSCII, CP852, CP1250, ISO Latin 2.
Pri uporabi standardne ASCII tabele se osmi bit pogosto uporabi kot kontrolni paritetni
(parnostni) bit za preverjanje pravilnosti zapisa znaka.
EBCDIC abeceda (tabela)
Ime je okrajšava za Extended Binary Coded Decimal Interchange Code. Uvedel jo je IBM, tako da
je razširil 6-bitno BCD abecedo, povzeli pa so jo še drugi proizvajalci računalnikov in je starejša od
ASCII.
EBCDIC koda je 8-bitna in temelji na BCD kodi. Pri zapisu števk in črk abecede spodnja
polovica zloga v kodi nikoli ne preseže vrednosti 9.
V tem zapisu so po velikosti kode najprej krmilni znaki, tem sledijo ločila, male črke so po velikosti
kode pred velikimi, največje kode pa imajo števke od 0 do 9.
16
kodiranje_informacij_1_0.doc
EBCDIC koda je 8-bitna,
zato vse kode niso
izkoriščene
ASCII tabela EBCDIC tabela znakov sta izpolnili svojo vlogo standarda v omejenem okolju.
Globalno pa se uporablja preveč znakov, ki bi jih bilo možno zapisati z 8 biti, zato se danes vedno
več uporablja UNICODE zapis abecede.
UNICODE abeceda
V osnovi poznamo štiri načine kodiranja znakov Unicode v zloge:
UTF-8 (Unicode Transformation Format)
Unicode UTF-8 standard zapiše kodo znaka z 1 do 6 zlogi.
17
kodiranje_informacij_1_0.doc
Če ga zapiše z enim zlogom, je prvi bit 0 in kodna tabela se kar ujema z ASCII kodno tabelo.
Za znake, ki imajo kodo višjo od 127, je zapis izveden z dvema zlogoma, pri čemer sta v prvem zlogu dve
1 in ena 0, kar prikazuje, da je znak zapisan z dvema zlogoma. V drugem zlogu sta prva dva bita 10.
Tudi za zapis z več zlogi velja enako. Prvi zlog z enicami pove, koliko zložna je koda, v vsakem
naslednjem zlogu pa je najprej 10, ki ji sledi koda. Zapis nazorno prikazuje tudi slika.
UCS-2 (2-byte Universal Character Set)
To je starejši način kodiranja, ki ga je nadomestil Unicode UTF-16
Vsak znak je predstavljen vedno z dvema zlogoma. Tako kodiranje lahko predstavi le prvih
65.536 znakov iz Unicode.
UTF-16
To je razširitev UCS-2, ki lahko predstavi 1.112.064 znakov iz Unicode. Prvih 65.536 znakov je
predstavljenih z dvema zlogoma, preostali s štirimi.
Uporablja se tam, kjer je zapis izveden s 16-bitnimi besedami.
Ta zapis ni "byte-oriented" tako kot UTF-8, zato je treba na začetku določiti, v kakšnem
zaporedju si sledijo zlogi (manj vreden najprej ali bolj vreden najprej). Isto velja tudi za UTF32.
UCS-4 in UTF-32
Vsak znak je zapisan s štirimi zlogi.
Vsebino določa Unicode Standard ISO/IEC 10646 s številnimi dopolnitvami, ker standard "živi" od leta 1991
in se spreminja.