Upload
truongkien
View
229
Download
6
Embed Size (px)
Citation preview
VULNIAUS GEDIMONO TECHNIKOS
UNEVERSITETAS
STATYBOS FAKULTETAS
STATYBOS INŽINERIJOS KATRDRA
Skaičiavimo sistema. Skaičių ir informacijos
vaizdavimas kompiuteryje
Referatas
Atliko: stud. Sf-14/3 Marijus Eltermanas
Priėmė doc. Juozas Laučius
1
TurinysĮvadas.............................................................................................................................3
1.1 Skaičiavimo sistemos...........................................................................................5
1.2 Sveikųjų dešimtainiu skaičių išreiškimas dvejetaine, aštuntaine arba šešioliktaine sistema......................................................................................................7
1.3 Dešimtainių trupmenų išreiškimas dvejetaine,....................................................7
1.4 Dvejetainiu, aštuntainiu ir šešioliktainiu skaičių dešimtaine skaičiavimo sistema.......................................................................................................................8
1.5 Aštuntainiu ir šešioliktainiu skaičių išreiškimas skaičiavimo sistema.............9
1.6 Dvejetainiu skaičių išreiškimas aštuntaine (šešioliktaine) skaičiavimo sistema9
2.1 Skaičių ir informacijos vaizdavimas kompiuteryje............................................10
2.2 Informacijos vaizdavimas..................................................................................10
2.3 Loginiu duomenų vaizdavimas..........................................................................20
2.4 Fiksuoto kablelio skaičių vaizdavimas..............................................................21
2.5 Slankaus kablelio skaičių vaizdavimas..............................................................24
2.6 Aritmetines operacijos įvairiomis skaičiavimo sistemomis...............................25
2.7 Informacijos apdorojimo principai kompiuteryje..............................................26
Išvados:........................................................................................................................28
Šaltinių sąrašas............................................................................................................29
2
ĮvadasSkaičių kalba, kaip ir kiekviena kalba, turi savo abėcėlę. Tos skaičių kalbos, kuria dabar ,,kalba”
beveik visas pasaulis, abėcėlė - dešimt skaitmenų, nuo 0 iki 9. Ši kalba vadinama dešimtaine
skaičiavimo sistema. Tačiau ne visais laikais ir ne visur žmonės vartojo dešimtainę skaičiavimo
sistemą. Matematiniu požiūriu ji nėra pranašesnė už kitas skaičiavimo sistemas, ir jos paplitimą
lėmė ne bendri matematiniai dėsniai, o visai kitokios priežastys.
Kai apytiksliai vertiname kokį nors dydį – žmogaus amžių, atstumą ir pan., visada
vartojame ,,apvalius” skaičius ir paprastai sakome: „Iš namo išėjo maždaug 50 metų žmogus;
paėjėjęs gatve apie 200 metrus, jis įėjo parduotuvę, nusipirko dvi dešimtis kiaušinių ir nuėjo
toliau......”. Operuoti apvaliais skaičiais žymiai paprasčiau: lengviau juos įsiminti, patogiau atlikti
veiksmus. Pavyzdžiui, visai nesunku mintinai padauginti 100 iš 200, o du „neapvalius” triženklius
skaičius, tarkim, 147 ir 242, toli gražu ne kiekvienas sudaugins be pieštuko ir popieriaus
Kalbėdami apie apvalius skaičius, net nepagalvojame, kad skaičių skirstymas į
apvalius ir neapvalius iš esmės yra sąlyginis. Vienas ir tas pats skaičius gali būti apvalus arba
neapvalus, žiūrint kokioje skaičiavimo sistemoje jis užrašytas. Nagrinėkime įprastą dešimtainę
skaičiavimo sistemą. Šioje sistemoje kiekvienas teigiamas sveikasis skaičius yra vienetų, dešimčių,
šimtų ir t. t. suma, t. y. suma skaičiaus 10 įvairių laipsnių su koeficientais, įgyjančias
svekąsiasreikšmes nuo 0 iki 9 imtinai. Pavyzdžiui skaičius 2548 yra 8 vienetų, 4 dešimčių, 5 šimtų
ir 2 tūkstančių suma, t. y.
2548 = 2•103+5•102+4•101+8•100.
Taigi 2548 – sutrumpintas šios išraiškos užrašas. Taip pat sėkmingai bet kurį skaičių galima
užrašyti ne 10, o kokio nors kito sveikojo skaičiaus (išskyrus 1) laipsnių kombinacija, pavyzdžiui,
skaičiaus 7. Šioje sistemoje, vadinamoje „septynetaine skaičiavimo sistema” arba ,,skaičiavimo
sistema pagrindu 7”, įprastu būdu skaičiuotume nuo 0 iki 6, o skaičius 7 būtu aukštesniojo skyriaus
vienetas. Skaičių 7 naujoje sistemoje žymėtume simboliu 10 (antrojo skyriaus vienetas). Kad
nepainiotume šio simbolio su dešimtainiu skaičiumi 10, prirašysime indeksą 7, t. y. Vietoj skaičiaus
7 rašytume (10)7. Kitų skyrių vienetai turėtų būti skaičiai 7², 7³ ir t.t.
Bet kurį skaičių galima sudaryti iš skaičiaus 7 laipsnių, t. y. išreikšti šitaip:
ak•7k+ak-1•7k-1+.....+a1•7+a0;
čia kiekvienas koeficientas a0, a1, ......, ak gali būti bet kuris sveikas skai2ius nuo 0 iki 6. Kaip ir
dešimtainėje sistemoje pagrindo laipsniu galima praleisti ir skaičių užrašyti šitaip:
(akak-1.....a1a0)7
Indeksas 7 rodo, kad vartojamos sistemos pagrindas – skaičius 7.
Išnagrinėkime pavyzdį. Dešimtainį skaičių 2548 galima užrašyti šitaip:
3
1•74+0•73+3•72+0•7+0,
arba, kaip susitarėme,(103000)7.Taigi (2548)10 =(10300)7.
Atkreipkite dėmesį į tai, kad septynetainėje sistemoje apvalūs bus tie ne tie skaičiai kaip
dešimtainėje sistemoje. Pavyzdžiui, (147)10 = (300)7, (343)10 = (1000)7 (nes 147=3•72
ir343=73);tuo tarpu (100)10 = (202)7, (500)10 = (1313)7.
Todėl septynetainėje sistemoje mintinai padauginti (147)10 ir (343)10 žymiai lengviau negu
(100)10 ir (200)10. Jeigu naudotume septynetain3 sistem1, tai, 49 metų (o ne 50) amžių suvoktume
kaip ,,apvalią datą” ir švęstume jubiliejų. Nustatydami atstum1 i6 akies, sakytume ,,apie 98 metrus”
arba ,,maždaug 196 metrai” (nes (98)10 =(200)7 ir (196)10 = (400)7 – apvalūs skaičiai
septynetainėje sistemoje), daiktus skaičiuotume septynetas, o ne dešimtimis. Tačiau septynetainė
sistema menkai vartojama; ji negali konkuruoti su visur paplitusia dešimtaine sistema.
Šiandien rimtomis dešimtainės sistemos konkurentėmis tampa dvejetainė, aštuntainė ir šešioliktainė
sistemos, nes joms pirmenybę teikia šiuolaikinės skaičiavimo mašinos.
Šiame referate pasakojama apie įvairių sistemų ypatybes ir vartojimą.
1.1 Skaičiavimo sistemos įvairios skaičiavimo sistemos skiriasi skaitmenimis ir jų vartojimo taisyklėmis. Mums įprasta
dešimtaine pozicine skaičiavimo sistema.
Sistema vadinama dešimtaine, nes joje yra dešimt skaitmenų: 0, 1, 2, 3,
4, 5, 6, 7, 8, 9.
Skaičius 10 - sistemos pagrindas. Sistema vadinama pozicine, nes daugiaženklio
skaičiaus kiekvieno skaitmens reikšme priklauso nuo jo padėties (pozicijos) skaičiuje. Pavyzdžiui,
skaičiuje 457 pirmasis skaitmuo žymi keturis šimtus, antrasis - penkias dešimtis, o paskutinysis –
septynis vienetus:
400 + 50 + 7 = 457.
Ši skaičių galima užrašyti sistemos pagrindo laipsniais, padaugintais iš
koeficientu:
457 = 4 · 102 + 5 · 101 + 7 · 100
Matome, kad einant iš dešines i kaire, kiekvienos paskesnes pozicijos reikšme
padidėja tiek kartu, koks yra sistemos pagrindas.
4
Dešimtaines skaičiavimo sistemos trupmenos ir mišrieji skaičiai interpretuojami
analogiškai. Kiekviena pozicija, einant i dešine, nuo kablelio, atitinka to paties pagrindo laipsni
mažėjančių neigiamu rodikliu. Pavyzdžiui:
436, 576 = 4 · 102 + 3 · 101 + 6 · 100 + 5 · 10−1 + 7 · 10−2 + 8 · 10−3
Analogiškai gali buti užrašyti skaičiai ir kitomis skaičiavimo sistemomis.
Dešimtaine skaičiavimo sistema yra nepatogi kompiuteriui, nes jo atminties įrenginiai
gali atsiminti tik viena iš skaitmenų: 0 arba 1. Todėl kompiuteriuose vartojame ne dešimtaine, o
dvejetaine skaičiavimo sistema.
Dvejetainėje skaičiavimo sistemoje yra tik 2 skaitmenys: 0 ir 1. Užrašas 10 čia atitinka dešimtaini
skaičių 2. Dvejetainiai skaičiai sudaromi tik 0 ir 1 deriniu. Skaičiavimo sistemos pagrindą,
nurodysime prie skaitmenų. Pavyzdžiui:
101101(2) = 1 · 25 + 0 · 24 + 1 · 23 + 1 · 22 + 0 · 21 + 1 · 20 = 45(10)
1.1 pav.: Ryšiai tarp skaičiavimo sistemų
Trupmeniniai dvejetainiai skaičiai interpretuojami analogiškai:
0, 1011(2) = 1 · 2−1 + 0 · 2−2 + 1 · 2−3 + 1 · 2−4 = 11/16(10)
arba 0, 5 + 0, 125 + 0, 0625 = 0, 6875(10).
Dažnai dešimtaini skaičių, užrašyta dvejetaine skaičiavimo sistema, sudaro ilga nuliu
ir vienetu seka, kuria sunku greitai suvokti ir nepatogu vartoti. Tokius skaičius trumpiau galima
užrašyti aštuntaine arba šešioliktaine skaičiavimo sistema.
5
Analogiškai dešimtainei skaičiavimo sistemai aštuntaine sistema turi 8 skaitmenis: 0, 1, 2, 3, 4,
5, 5, 7, o šešioliktaine - 16: pirmi dešimt (0- 9) imami iš dešimtaines sistemos ir atitinka tuos
skaitmenis, kiti šeši (10,11,12,13,14,15) užrašomi raidėmis: A, B, C, D, E, F.
Kadangi 23 = 8 ir 24 = 16, tai kiekvienas aštuntainis skaitmuo užrašomas
3 dvejetainiais skaitmenimis, o kiekvienas šešioliktainis skaitmuo - 4
dvejetainiais skaitmenimis dvejetaine skaičiavimo sistema.
Be minėtu skaičiavimo sistemų, gali buti vartojamos ir kitos, todėl reikia mokėti
išreikšti vienos skaičiavimo sistemos skaičius kita sistema. Praktikoje kartu dažniausiai
vartojamos trys skaičiavimo sistemos: dešimtaine, aštuntaine ir dvejetaine arba dešimtaine,
šešioliktaine ir dvejetaine. Taigi išreiškiama taip, kaip pavaizduota 1.1
1.2 Sveikųjų dešimtainiu skaičių išreiškimas dvejetaine, aštuntaine arba šešioliktaine sistema
Dešimtainis sveikasis skaičius išreiškiamas nauja skaičiavimo sistema, nuoseklia dalijant ta
skaičių ir gautus dalmenis iš naujos skaičiavimo sistemos pagrindo, užrašyto dešimtaine
skaičiavimo sistema. Gautos liekanos ir paskutinis dalmuo surašyti atvirkštine tvarka, sudarys
naujos sistemos skaičių.Visi veiksmai atliekami dešimtaine sistema.
Išreiškiant skaičius šešioliktaine sistema gautos liekanos 10, 11, 12, 13, 14, 15
keičiamos atitinkamais šešioliktainiais skaitmenimis A, B, C, D, E,F.
Pateikiame pavyzdžiu, kaip sveikieji dešimtainiai skaičiai išreiškiami dvejetaine, aštuntaine ir
šešioliktaine sistema.
6
1.3 Dešimtainių trupmenų išreiškimas dvejetaine,aštuntaine arba šešioliktaine sistema
Dešimtaine trupmena išreiškiama nauja skaičiavimo sistema, nuosekliai dauginant ja
ir gautas trupmenines dalis iš naujos sistemos pagrindo, užrašyto dešimtaine sistema. Visi
veiksmai atliekami dešimtaine sistema. Gauti skaitmenys vienetu skiltyse sudarys naujos
sistemos skaičių.
Išreikšdami šešioliktaine sistema sveikojoje skaičiaus dalyje gautus skaičius 10, 11,
12, 13, 14, 15, keičiame atitinkamais šešioliktainiais skaitmenimis A, B, C, D, E, F. Pateikiame
pavyzdžiu kaip dešimtaines trupmenos išreiškiamos dvejetaine, aštuntaine ir šešioliktaine
sistema:
0, 71875(10) = 0, 10111(2) 0, 71875(10) = 0, 56(8) 0, 71875(10) = 0,B8(16)
Pateiktame pavyzdyje dešimtaine trupmena tiksliai išreiškėme dvejetaine, aštuntaine ir
šešioliktaine sistema. Tačiau taip būna ne visuomet. Dažnai daugybos procesas yra begalinis ir
rezultatas būna begaline periodine trupmena. Tuomet skaitmenų skaičius po kablelio imamas toks,
koks reikalingas tikslumas. Jeigu dešimtaini skaičių sudaro sveikoji ir trupmenine dalis, tai pagal
pirmąją taisykle išreiškiama sveikoji dalis, o pagal antrąją - trupmenine dalis.
1.4 Dvejetainiu, aštuntainiu ir šešioliktainiu skaičių dešimtaine skaičiavimo sistema
Dvejetainiai, aštuntainiai ar šešioliktainiai skaičiai išreiškiami dešimtaine sistema taip:
susumuojami visi dvejetaines, aštuntainės ar šešioliktaines sistemos skaitmenys, padauginti iš
skaičiavimo sistemos pagrindo, pakelto atitinkamos pozicijos laipsniu. Atlikus aritmetines
operacijas dešimtaine skaičiavimo sistema, gaunamas dešimtainis skaičius.
7
Pateikiame pavyzdi, kaip dvejetainiai, aštuntainiai ir šešioliktainiai skaičiai išreiškiami
dešimtaine skaičiavimo sistema:
110100101, 10111(2) = 1 · 28 + 1 · 27 + 0 · 26 + 1 · 25 + 0 · 24 + 0 · 23 + 1 · 22 +
+0 · 21 + 1 · 20 + 1 · 2−1 + 0 · 2−2 + 1 · 2−3 + 1 · 2−4 + 1 · 2−5 =
= 256 + 128 + 0 + 32 + 0 + 0 + 4 + 1+1/2+ 0 +1/8+ 1/16 + 1/32 = 421, 71875(10)
Pateiktas pavyzdys tuo pačiu parodo, kad veiksmai atlikti teisingai – gavome tuos pačius
dešimtainius skaičius, kuriuos ankstesniuose pavyzdžiuose išreiškėme dvejetaine, aštuntaine ir
šešioliktaine sistema.
1.5 Aštuntainiu ir šešioliktainiu skaičių išreiškimas skaičiavimo sistemaKiekvienas aštuntainis (šešioliktainis) skaitmuo dvejetaine sistema užrašomas trimis (keturiais)
skaitmenimis. 1.2 lentelėje pateikti pirmųjų šešiolikos skaičių dešimtainiai, aštuntainiai ir
dvejetainiai ekvivalentai.
Pateikiame pavyzdžiu, kaip aštuntainiai ir šešioliktainiai skaičiai išreiškiami
dvejetaine skaičiavimo sistema:
645, 56(8) = 110100101, 101110(2)
1A5,B8(16) = 000110100101, 10111000(2)
Kaip ir dešimtainėje skaičiavimo sistemoje, dvejetaine sistemoje užrašyti nereikšminiai nuliai neturi
įtakos.
8
1.2 Lentele: Skaičių ekvivalentai
1.6 Dvejetainiu skaičių išreiškimas aštuntaine (šešioliktaine) skaičiavimo sistema
Norint dvejetaini skaičių išreikšti aštuntaine (šešioliktaine) skaičiavimo sistema,
reikia ji suskaidyti grupėmis (i kaire ir i dešine nuo kablelio po tris (keturis) dvejetainius
skaitmenis ir kiekviena grupe pakeisti vienu aštuntainiu (šešioliktainiu) skaitmeniu. Jei
pirmoji triada (tetrada) iš kaires sveikojoje dalyje ir paskutinioji trupmenineje dalyje
nepilnos, jos papildomos nuliais. Pavyzdžiui:
110100101, 101110(2) = 110/100/101/, 101/110(2) = 654, 56(8)
000110100101, 10111000(2) = 0001/1010/0101/, 1011/1000(2) = 1A5,B8(16)
9
2.1 Skaičių ir informacijos vaizdavimas kompiuteryje
2.2 Informacijos vaizdavimas Visų tipų duomenys kompiuterio atmintyje vaizduojami bitų rinkiniais. Baziniai duomenų
tipai yra:
- skaičiai:
- sveikieji skaičiai;
- realieji (trupmeniniai) skaičiai;
- simboliniai (tekstiniai) duomenys;
- grafiniai duomenys;
- garsas;
- video.
Sveikieji skaičiai. Sveikieji skaičiai yra vaizduojami taip vadinamu fiksuoto kablelio formatu.
Jame dešimtainio kablelio pozicija yra fiksuota. Sveikiesiems skaičiams dešimtainis kablelis yra po
paskutinio skaitmens.
Priklausomai nuo sveikojo skaičiaus ilgio jam vaizduoti skiriama 1, 2 arba 4 baitai:
- trumpas sveikasis skaičius – 1 baitas;
- standartinis sveikasis skaičius – 2 baitai;
- ilgas sveikasis skaičius – 4 baitai.
Norint sveikąjį neneigiamą skaičių pavaizduoti, pvz., dviejuose baituose, reikia jį užrašyti
dvejetainėje sistemoje ir papildyti nuliais iš kairės, kad būtų 16 dvejetainių skaitmenų,
pvz.: 5 - 00000000 00000101
Visų galimų standartinių sveikųjų neneigiamų skaičių be ženklo intervalas yra:
0 (00000000 00000000) – 65 535 (11111111 11111111)
Taigi:
viename baite galima pavaizduoti skaičius be ženklo nuo 0 iki 255 (28 – 1),
dviejuose nuo 0 iki 65 535 (216 – 1),
ir keturiuose baituose nuo 0 iki 4 294 967 295 (232 – 1).
Sveikieji neigiami skaičiai. Vaizduojant sveikus skaičius su ženklu, galima būtų kairiausią
bitą skirti ženklo vaizdavimui: pvz., 0 reikštų pliusą, o 1 - minusą. Tada dviejuose baituose galima
būtų pavaizduoti skaičius nuo +0 iki +32 767 ir nuo -0 iki - 32 767, tačiau tokiu atveju 0 būtų
vaizduojamas dviem skirtingais būdais (plius nulis ir minus nulis) , o tam reikėtų specialios
10
aritmetikos, dirbančios su dviem nuliais. Todėl neneigiamų skaičių vaizdavimui naudojamas
tiesioginis kodas (vaizduojamas pats skaičius x, t.y. vaizduojamas taip pat kaip ir skaičius be
ženklo, tik vienas bitas rezervuojamas ženklui). O neigiamų skaičių vaizdavimui naudojamas
papildomas kodas (vietoje skaičiaus -x vaizduojamas skaičius 2N - x, kur N – skiriamų skaičiui
pavaizduoti bitų kiekis).
Papildomas kodas. Papildomas kodas gaunamas tokiu būdu:
Pavaizduojamas atitinkamas teigiamas skaičius.
Visi bitai invertuojami, t.y. 0 keičiamas 1 ir atvirkščiai.
Pridedamas 1.
Panagrinėkime, pavyzdžiui, kaip bus pavaizduotas skaičius -5:
1. 5 - 00000000 00000101
2. Bitai invertuojami 11111111 11111010
3. Pridedamas 1 11111111 11111011
Naudojant tokį vaizdavimo formatą visų neneigiamų skaičių kairiausias bitas yra 0, o neigiamų - 1.
Dviejuose baituose galima pavaizduoti sveikus skaičius su ženklu nuo -32 768 iki 32 767:
0 00000000 00000000
1 00000000 00000001
… …
32 766 01111111 11111110
32 767 01111111 11111111
-32 768 10000000 00000000
-32 767 10000000 00000001
… …
-2 11111111 11111110
-1 11111111 11111111
Analogiškai, viename baite gali būti pavaizduoti sveikieji skaičiai su ženklu nuo -128 iki 127,
o keturiuose baituose – nuo -2 147 483 648 iki 2 147 483 647.
Sveikieji skaičiai kompiuterio atmintyje vaizduojami tiksliai, bet jų kiekis nėra didelis. Be to,
dirbant su sveikaisiais skaičiais, pačiam programuotojui reikia rūpintis, kad operacijos rezultatas
patektų į
sveikųjų skaičių apibrėžimo sritį. Priešingu atveju galima gauti iš pirmo žvilgsnio "keistus"
rezultatus. Pavyzdžiui, matematikoje dviejų teigiamų skaičių suma visada yra teigiamas skaičius,
11
tačiau kompiuteriui 32 767 + 1 = -32 768. Tai galima suprasti tik žinant, kaip sveikieji teigiami ir
neigiami skaičiai vaizduojami kompiuterio atmintyje:
Fizinis duomenų vaizdavimas kompiuterio atmintyje gali skirtis nuo aptarto dėl skirtingo baitų
išdėstymo. Personaliniuose kompiuteriuose jaunesnieji baitai talpinami atmintyje mažesniais
adresais, todėl fiziškai atmintyje sveikasis skaičius 5 dviejuose baituose bus pavaizduotas ne taip:
5 00000000 00000101,
o šitaip: 5 00000101 00000000.
Realiųjų skaičių vaizdavimas. Kiekvieno tipo duomenims vaizduoti skiriamas baigtinis bitų
skaičius, o kiekvienas bitas gali įgyti tik vieną iš dviejų reikšmių, todėl galima pavaizduoti tik
baigtinę reikšmių aibę, t.y. gali būti vaizduojami tik diskretiniai duomenys. Tai reiškia, kad
kompiuteryje negalima pavaizduoti, pavyzdžiui, visų atkarpos taškų. Dėl šių priežasčių kyla
problemos, vaizduojant kompiuterio atmintyje realius skaičius. Tarp bet kurių dviejų realiųjų
skaičių yra be galo daug tarpinių realiųjų skaičių ir jie visi negali būti pavaizduoti kompiuterio
atmintyje. Tačiau reikia turėti galimybę atlikti skaičiavimus, kuriuose operuojama su plataus
spektro realiaisiais skaičiais: tiek su labai mažais, pavyzdžiui, elektrono masė; tiek su labai
dideliais, pavyzdžiui, atstumas iki žvaigždės. Šių problemų sprendimui pravers mokslinis formatas (
angl. scientific notation): kiekvieną skaičių galima užrašyti tokia forma
x = <ženklas> <mantisė> * P<eilė>
kur ženklas yra "+" arba "-", mantisė (t.y. skaičiaus su slankiuoju kableliu užrašo dalis po kablelio)
yra neneigiama, o P yra skaičiavimo sistemos pagrindas. Pastebėkime, kad toks užrašas nėra
vienareikšmis - keičiant taško poziciją mantisėje ir tuo pačiu metu eilės reikšmę, pats skaičius
nesikeičia, pavyzdžiui:
-1.75 * 100 = -17.5 * 10-1 = -0.175 * 101
Dėl vienareikšmiško apibrėžtumo dažniausiai pridedami papildomi reikalavimai mantisei, kad ji
būtų normalizuota. Normalizuotos mantisės sąvoka priklauso nuo kompiuterio architektūros. Kai
kuriuose kompiuteriuose nenulinio skaičiaus mantisė yra mažesnis už 1 skaičius, kurio pirmas
skaitmuo yra nenulinis, t.y.
x = <ženklas> 0.<mantisė> * P<eilė>
Tokiame užraše eilė gali būti ir teigiama, ir nulinė, ir neigiama. Kompiuterio atmintyje dažniausiai
vaizduojama ne pati eilė, bet charakteristika - neneigiamas skaičius, gaunamas prie eilės pridėjus
konstantą. Kadangi dešimtainio (dvejetainio) taško pozicija nėra fiksuota, todėl šis vaizdavimo
formatas vadinamas slankaus kablelio ( angl. floatingpoint) skaičių formatu.
12
Vaizduojant realų skaičių keturiuose baituose, ženklui skiriamas 1 bitas (0 reiškia "+", 1 -
"–"), mantisei - 23 bitai, o charakteristikai - 8 bitai.
Taigi, realus skaičius -1.75 keturiuose baituose būtų pavaizduotas taip:
Beveik visada realūs skaičiai negali būti pavaizduoti tiksliai, tam kad pavaizduoti
kompiuterio atmintyje, jie apvalinami, t.y. gaunama apvalinimo paklaida ( angl. roundoff error).
Nors slankaus kablelio formato skaičių kitimo diapazonas labai platus (maždaug nuo 10-45 iki
1038), bet vaizduojant keturiuose baituose (kai mantisei skiriami 23 bitai), tiksliai pavaizduojami
tik 6-7 dešimtainiai skaitmenys. Pastebėkime, kad slankaus kablelio skaičiai išsidėstę labai
netolygiai: arti 0 labai tankiai, o kuo toliau nuo 0 tuo rečiau - todėl absoliuti vaizdavimo
(apvalinimo) paklaida priklauso nuo skaičiaus (jo modulio) dydžio.
Toliau nagrinėsime realių skaičių vaizdavimą konkrečiai personaliniuose kompiuteriuose.
Personaliniuose kompiuteriuose eilė yra dvejetainė (P=2) ir pirmasis mantisės skaitmuo visada turi
būti 1, todėl naudojama kiek kitokia skaičiaus forma
x = <ženklas> 1.<mantisė> * 2<charakteristika>,
kur charakteristika yra sveikas neneigiamas skaičius, gaunamas prie eilės pridėjus konstantą. Šios
konstantos dydis priklauso nuo dydžio atminties, skiriamos skaičiui (tame tarpe ir jo
charakteristikai) pavaizduoti, pavyzdžiui, kai realiam skaičiui skiriami 4 baitai, charakteristika yra
eilė + 127.
Panagrinėkime pavyzdį. Tarkime, kad personalinio kompiuterio atmintyje norime pavaizduoti
skaičių -1.75. Pirmiausia jį reikia užrašyti dvejetainėje skaičiavimo sistemoje
-1.75 = -(1 + 1/2 + 1/4) = -1.112
Tada užrašome dvejetainiu moksliniu formatu taip, kad sveikoji dalis būtų lygi 1
-1.112 = -1.11 * 20
Gauname, kad ženklas yra “–", mantisė yra 11, o charakteristika yra 127 (= 0 + 127). Taigi, -1,75
PK atmintinėje realiai bus:
13
Tekstiniai (simboliniai) duomenys. Dabar kompiuteriai daug dirba ne tik su skaičiais, bet ir su
tekstais (simboliais). Norint simbolius vaizduoti kompiuterio atmintyje, reikia sudaryti simbolių
kodų lentelę, kuri vienareikšmiškai susietų visus reikalingus simbolius su bitų rinkiniais. Kyla
klausimas, kiek bitų reikia simbolių vaizdavimui. Anglų kalboje yra 26 didžiosios ir 26 mažosios
raidės, 10 skaitmenų ir apie 35 specialius simbolius, naudojamus skyrybai ir pan. - iš viso apie 100
simbolių. Be to, dar reikia specialių "valdančių simbolių", kurie turi specialią prasmę tekstų
redaktoriams (pavyzdžiui, nutrinti simbolį) arba kompiuterio įrenginiams (pavyzdžiui, cyptelti).
Šešių bitų nepakanka (26 = 64), taigi minimaliam kodui reikia 7 bitų (27 = 128). Dauguma kodų
naudoja 8 bitus, įtraukdami daugiau specialių, grafinių simbolių arba kontrolei, todėl tradiciškai
kompiuteriai skiria 8 bitus, t.y. vieną baitą, simbolių vaizdavimui. Kadangi kompiuterijos vystymosi
lyderė buvo JAV, tarptautiniu mastu įsitvirtino ten sukurti standartai ir, būtent, ANSI (Amerikos
nacionalinis standartų institutas) standartas ASCII ( Amerikos kodų standartas informacijos
pasikeitimui). Jį sudaro dvi lentelės: 7 bitų ilgio kodų – bazinė ir 8 bitų (1 baito) išplėstoji. Bazinėje
lentelėje kodų reikšmės yra nuo 0 iki 127, išplėstojoje – nuo 128 iki 255.
Apžvelkime ASCII kodų lentelę žr. pav. 1 Pirmi 32 bazinės lentelės kodai (0-31) skirti
kompiuterių įrangos gamintojams koduoti valdymo signalus. Kodai, kurių reikšmės nuo 32 iki 127,
panaudoti užkoduoti anglų kalbos raides kitus specialius rašybos simbolius bei skaitmenis. Trijų
pagrindinių grupių - skaitmenys, didžiosios raidės ir mažosios raidės - simboliai grupėse eina iš
eilės be praleidimų. Pvz.:
A - 6510 – 010000012 - 4116; g – 10310 - 011001112 - 6716;
ženklas > - 6210 – 001111102 - 3E16 ;
skaitmuo 1 - 4910 - 001100012 - 3116 ir t. t.
Kiti specialūs simboliai - skirtukai, operacijų ženklai, skliaustai ir pan. išbarstyti likusiose vietose.
Pavyzdžiui, simbolio " " (tarpas) kodas 32, "[" (atidarantis laužtinis skliaustelis) - 91, "{"
(atidarantis riestinis skliaustelis) - 123.
14
1.
2.
Nacionalinių rašmenų kodavimas. Nacionalinių rašmenų kodavimui naudojama antroji arba
išplėstoji ASCII kodų lentelės dalis, kurios kodų reikšmės yra nuo 128 iki 255 (dvejetainiame
pavidale vyriausiojo bito reikšmė yra 1). Standartiniame variante joje yra įvairūs psiaudo-grafikos
ženklai. Kadangi šių rašmenų įvairovė labai didelė, todėl ir kodavimo lentelių atsirado labai daug.
Pvz. Rusijoje išplito jų standartas vadinamas KOI-8, Lietuvoje lietuviškoms raidėms koduoti
atsirado taip pat keli variantai. Visa tai kėlė nemažai problemų ir programų kūrėjams ir jų
vartotojams. Skirtingos kodų lentelės naudojamos ir skirtingose operacijų sistemose (DOS,
Windows). 2000-ųjų pradžioje buvo priimti standartai, įvedę šioje srityje tam tikrą tvarką. Rašto
ženklų kodavimą 8 bitais apibrėžė tarptautinių standartų serija ISO/IEC 8859. Ją sudaro atskiros
15
dalys (standartai), skirtos tam tikrų kalbų grupių rašto ženklams koduoti. Standartų serija yra atvira,
t. y. ji gali būti papildyta naujomis dalimis. Dabar yra 15 dalių. Serijos 13-oji dalis ISO/IEC 8859-
13 apibrėžia ženklų rinkinį, turintį lietuviškus rašto ženklus ir vadinamąją 7-ąją lotynų abėcėlę. Šis
standartas pripažintas ir Lietuvos standartu, jam suteiktas žymuo LST ISO/IEC 8859-13- 2000. Jo
kodų lentelė kompiuteriuose žymima trumpiau –ISO-8859-13. Šis standartas kaip ir kiti šios serijos
standartai nepriklauso nuo operacijų sistemos ir naudojami duomenų mainams tarp įvairių OS,
interneto, elektroninio pašto srityje. OS “Windows” turi savą kodų lentelių sistemą. Lentelės
žymimos skaičiais 1250, 1251 ir t.t. Baltijos šalims skirta “Windows 1257” lentelė, atitinkanti ISO-
8859-13. Plačiai prieš “Windows” operacijų sistemą naudota operacijų sistema DOS, turėjo
lietuviškų rašmenų lentelę, įvardintą skaičiais 775, kuri turi visus standarto ISO-8859-13 ženklus.
Tekstai, parašyti DOS terpėje, naudojant 775 kodų lentelę, gali būti perskaityti su lietuviškomis
raidėmis ir dabartinėse Windows terpėse. Lietuvių kalba turi išskirtiną savybę – kirčiuotas raides,
todėl yra sudarytas ir kirčiuotų raidžių standartas LSTISO/IEC 8859-13, dalį užsienio kalbų raidžių
ir specialiųjų ženklų pakeitus lietuviškomis kirčiuotomis raidėmis.
1.
Išplėstoji ASCII kodų lentelės dalis su lietuviškomis
raidėmis ISO – 8859 – 13 standartas
Universalioji teksto kodavimo sistema UNICODE. Analizuojant organizacinius sunkumus,
susijusius su vieningos įvairių kalbų simbolių kodavimo sistemos sukūrimu, galime padaryti
išvadas, kad svarbiausia to problema – ribotas kodų reikšmių kiekis, lygus 28 = 256. Pailginus šį
kodą, galimų reikšmių kiekis žymiai išaugtų. Tokia sistema, kurioje 1-am simboliui užkoduoti
skirta 16 bitų (2 baitai) vadinama universaliąja kodavimo sistema –UNICODE. 16 skilčių kodas
leidžia užkoduoti 65536 skirtingus simbolius, o to pakanka daugumos planetos kalbų simboliams
užkoduoti. Pereinant į šią teksto kodavimo sistemą visi tekstiniai failai padvigubėja, todėl tik dabar,
16
išaugus kompiuterinių sistemų resursams, vis plačiau pereinama prie šios kodavimo sistemos, kuri
apima ir senąją 8 bitų ASCII kodų sistemą ir dar 256 kartus padidina galimų užkoduoti simbolių
skaičių.
Grafinių duomenų kodavimas. Terpė, kurioje formuojamas grafinis vaizdas, ar tai būtų
displėjaus ekranas, ar popieriaus lapas spausdintuve, sudalijamas į tam tikrą skaičių taškų
horizontalia ir vertikalia kryptimis. Šie taškai dar vadinami pikseliais (pixel). Šis taškų skaičiai
horizontalia ir vertikalia kryptimis vadinami skiriamąja geba. Grafiniai elementai sudaromi iš
įvairiaspalvių taškų. Galimas dvejopas jų aprašymas – vektorinis ir rastrinis (matricinis, pilno
užpildymo). Vektoriniu būdu vaizduojamą piešinį sudaro atkarpų (vektorių) rinkinys. Šiuo atveju
piešinio kompiuterinis kodas bus informacija apie jį sudarančius vektorius, t.y. vektorių pradžios ir
pabaigos taškų koordinatės, atspalvis. Tarpinių vektoriaus taškų koordinatės bus suskaičiuojamos.
Rastriniu būdu vaizduojamo piešinio kodą sudaro informacija apie visų taškų spalvingumą.
Vektorinis vaizdavimo būdas:
Ekranas, skiriamoji geba 800 x 600, 1024 x 768 ir t.t.
Atspalvių įvairovė priklausys nuo paskirto kodo ilgio. Pvz., jei tam skirsime 1 baitą, turėsime
256 pilkumo atspalvius dvispalviame piešinyje.
Spalvų kodavimas. Spalvoto vaizdo kodavimui naudojamas spalvos dekompozicijos į
pagrindines sudedamąsias principas. Pagrindinėmis sudedamosiomis spalvomis naudojamos 3
spalvos – raudona (R-red), žalia (G-green) ir mėlyna(B-blue). Praktiškai laikoma (nors teoriškai ne
visai taip), kad bet kokią spalvą galime gauti iš šių trijų spalvų mišinio. Tokia spalvų kodavimo
sistema vadinama RGB. Jeigu kiekvienos bazinės spalvos ryškumo lygiui užkoduoti naudosime 256
reikšmes (8 bitų kodą), tai vieno taško spalvai apibūdinti reikės 24 skilčių (3 baitų) kodo. Toks
kodavimas leidžia vienareikšmiškai nurodyti vieną iš 16,5 milijono skirtingų spalvų. Toks jų kiekis
17
yra artimas žmogaus akies jautrumui. Šis spalvų kodavimas kompiuterinėse sistemose vadinamas
pilnaspalviniu ( True Color). Šiuolaikinėse sistemose jo ilgis gali siekti ir 32 skiltis.16 skilčių
spalvų kodas vadinamas High Color, jis turi 65536 spalvas. Poligrafijoje naudojama kita spalvų
kodavimo sistema, kurioje naudojamos taip vadinamos papildomos spalvos, t. y. spalvos,
papildančios pagrindinę spalvą iki baltos spalvos. Tokios papildomos spalvos yra žaliai mėlyna
( Cyan-C), purpurinė ( Magenda-M) ir geltona ( Yellow-Y). Praktiškai prie jų dar pridedama
ketvirta spalva – juoda ( Black-K), todėl ši spalvų kodavimo sistema vadinama CMYK ir
koduojama 32 skilčių (4 baitų) kodu.
Garso informacijos kodavimas. Garso informacija į kompiuterines sistemas atėjo vėliau nei
skaičiai, tekstas ar grafika, todėl dar ir iki šiol dauguma garso kodavimo dvejetainiais kodais
metodų nėra visuotinai standartizuoti, naudojami taip vadinami korporaciniai standartai, t.y. sukurti
ir naudojami atskirų stambių kompanijų, kuriančių garso informaciją apdorojančią aparatinę ir
programinę įrangą. Garso sintezavimui ir kodavimui kompiuteriuose dažniausiai naudojami trys
metodai:
dažnių moduliacijos;
garso sintezės iš bangų lentelės;
garso fizinio modeliavimo.
FM ( Frequency Modulation) – žemesnio dažnio signalo moduliacijos aukštesnio dažnio
signalu metodas remiasi teiginiu, kad teoriškai bet koks sudėtinis garsas gali būti išskleistas į
paprastų skirtingo dažnio harmoninių signalų seką, kurių kiekvienas išreiškia taisyklingą sinusoidę,
t. y. gali būti skaitiškai aprašytas (užkoduotas).
Gamtoje garso signalai išreiškia nepertraukiamą spektrą, jie yra analoginiai. Koduojant jie yra
diskretizuojami.
Dažnių moduliacijos metodas (FM). Tai atlieka specialūs įrenginiai, vadinami analoginiais –
skaitiniais keitikliais. Pagrindiniai skaitiniai garso parametrai yra jo tonas (jį aprašančios sinusoidės
dažnis), matuojamas hercais bei garso trukmė, matuojama milisekundėmis. Tai reiškia, kad šiuo
metodu bet kokį garsą galima išreikšti dviem sveikaisiais skaičiais. Sintezuojant FM metodu,
keičiamo dažnio ir amplitudės harmoniniai virpesiai moduliuojami kitais aukštesniais virpesiais ir
moduliuoti virpesiai sumaišomi. Taip gaunami sudėtingi virpesiai, imituojantys tam tikrą
instrumentą. Gautojo signalo intensyvumas keičiamas taip, kad atitiktų sintezuojamam instrumentui
(klavišiniui, pučiamajam) būdingą signalo intensyvumo kitimą. Taip sintezuoti garsai skiriasi nuo
natūralių instrumentų, tačiau jų
18
kodas pakankamai kompaktiškas ir buvo naudojamas pirmosiose kompiuterinėse garso apdorojimo
sistemose, gerai tinka žaidimams įgarsinti.
Garso sintezės iš bangų lentelės metodas. Artimesni natūraliems yra garsai, sintezuojami iš
kompiuterio atmintyje saugomų skaitmenine forma įrašytų trumpų natūralių garso fragmentų. Toks
metodas vadinamas garso sintezės iš bangų lentelės metodu ( Wave Table Synthesis). Žargoniškai
saugomi garsų fragmentai vadinami semplais ( Samples), o pats metodas semplingu ( Sampling).
Šiuo metodu koduotas failas saugomas .wav plėtinį turinčiame faile, kurį sudaro informacija,
nurodanti kokius ir kaip apdoroti natūralaus garso fragmentus, t. y. semplus. Nurodomas
instrumento tipas, modelio Nr., tono aukštis, garso trukmė ir intensyvumas, jų kitimo dinamika, kai
kurie aplinkos, kurioje atsiranda garsas, parametrai, kiti garsą charakterizuojantys duomenys.
Panaudodamas šiuos duomenis bei turimus garso semplus, garso procesorius sukuria jo atgaminimo
kodą, kuris perduodamas į skaitmeninį – analoginį keitiklį ir iš jo į akustinę sistemą.
Garso fizinio modeliavimo metodas. Šiuo metodu atliekamas virpesių atsiradimo ir kitimo
procesų tikrame instrumente modeliavimas ( Physical Modelling). Garsų sintezatoriams, kurie
modeliuoja virpesių atsiradimo ir kitimo procesus tikrame instrumente, nereikia talpios atmintinės,
bet reikia sudėtingo ir labai spartaus garso procesoriaus, kuris suspėtų modeliuoti instrumento
kuriamus virpesius. Šie sintezatoriai pranašesni dar ir tuo, kad grojant MIDI ( Musical Instruments
Digital Interface) instrumentu galima keisti daug jo parametrų. Garso įrašymo ir atkūrimo kokybė
labai priklauso nuo to, kaip tiksliai analoginis signalas yra paverčiamas skaitmeniniu ir atvirkščiai.
Analoginis signalas skaičiais bus aprašomas tuo geriau, kuo dažniau (diskretizuojant) ir tiksliau
(kvantuojant) bus matuojamos jo momentinės reikšmės (Sampling). Pvz., CD kokybei reikia 44,1
kHz ir 16 bitų, tada 1 min. įrašo užims 10,5 MB, o telefoninei kokybei pakaks ir 5,5 kHz ir 8 bitų,
tada 1 min. užims tik 0,65 MB.
Kompiuterio apdorojamus duomenis galima suskirstyti i 3 grupes:
• loginius duomenis;
• fiksuoto kablelio skaičius;
• slankaus kablelio skaičius.
Visa informacija kompiuteris saugo dvejetaine skaičiavimo sistema, t.y. 1 ir 0 deriniais. Mažiausias
informacijos vienetas yra bitas. Jame galima saugoti tik viena dvejetaini skaitmeni: 0 arba 1.
Aštuoniu bitu grupe sudaro baitą. Bitai jame numeruojami iš dešines i kaire nuo 0 iki 7 (202 pav
19
2.
Bitu numeracija baite
Viename baite galima saugoti 256 skirtingus 1 ir 0 derinius. Jei mažai vieno -
informacija galima saugoti keliuose baituose. Dviejų baitu grupe sudaro žodi, dviejų žodžiu
grupe sudaro dviguba žodi. Keliu baitu grupe dažniausiai vadinama lauku.
Nepaisant to, kad visi duomenys kompiuteryje saugomi dvejetainiais skaitmenimis,
kiekviena duomenų grupe turi sava vaizdavimo formatą.
2.3 Loginiu duomenų vaizdavimas
Loginiai duomenys gali buti laikomi baituose, žodžiuose arba laukuose. Šiems
duomenims vaizduoti vartojami visi baito, žodžio arba lauko bitai. Loginiais kodais
vaizduojami:
• simboliniai duomenys;
• skaičiai be ženklo;
• bitu duomenys.
Simboliniai duomenys yra visi klaviatūros simboliai :
• lotyniška abėcėlė (A - Z);
• skaitmenys (0 - 9);
• specialus ženklai bei valdymo klavišai.
Kiekvienas simbolis vaizduojamas tam tikru 1 ir 0 deriniu viename baite. Tai ASCII
kodas (angl. American Standart Code for Information Intertarchange - Amerikos standartinis
kodas informacijos mainams). Pagrindiniu simboliu ASCII kodai pateikti 2.1 lentelėje.
Pavyzdžiui, simboliai “A“ ir “B“ atrodytu taip:
20
Skaičiai be ženklo baite ar žodyje vaizduojami dvejetaine skaičiavimo sistema, todėl
baite gali tilpti skaičiai nuo 0 iki 255 (00-FF), o žodyje – nuo 0 iki 65535 (0000 – FFFF).
Pavyzdžiui skaičius 19 baite ir žodyje atrodytu taip:
Bitu duomenys gali buti pavaizduoti atskiruose baito ar žodžio bituose yra vartojami loginei
informacijai užkoduoti.
2.4 Fiksuoto kablelio skaičių vaizdavimas
Fiksuoto kablelio skaičiai vaizduojami baituose arba žodžiuose. Ši skaičių vaizdavimo forma
taikoma tik sveikiesiems skaičiams, nes kablelis visuomet fiksuojamas po nulinio bito.
21
2.1 lentele: ASCII kodų lentelė
2.2 pav.: Ženklo skiltis baite ir žodyje
Teigiami skaičiai vaizduojami tiesioginiu kodu: ženklo bite yra 0, o kituose - skaičiaus
reikšme dvejetainėje skaičiavimo sistemoje.
Neigiami skaičiai vaizduojami papildomu kodu su vienetu ženklo bite. Skaičiaus
papildomas kodas sudaromas invertuojant skaičiaus modulio tiesioginio kodo skaitmenis (t.y, 1
22
keičiant 0, 0 keičiant 1) ir pridedant prie gauto skaičiaus 1. Taip pat skaičiaus papildoma kodą
galima gauti vartojant šešioliktaine skaičiavimo sistema: ši skaičių reikia atimti iš skaičiaus
FFFF(16) (kai skaičius saugojamas žodyje) ir prie gauto skaičiaus jauniausiojo skaitmens pridėti 1.
Pavaizduokime skaičių −21 baite:
1. Skaičiaus moduli verčiame i dvejetaine skaičiavimo sistema: 21(10) =1B(16) = 00011011(2).
1. Invertuojame kiekviena bitą: 11100100(2).
3. Prie gauto skaičiaus pridedame vienetą:
11100100+1=11100101
Norint rasti neigiamo skaičiaus moduli reikia pakartoti ankstesnius veiksmus: invertuoti bitus ir
pridėti vienetą
11100101 - neigiamas skaičius
00011010 - inversija
+ 1
00011011 - teigiamas skaičius
Taigi skaičius 11100101(2), įrašytas baite, vaizduoja −21(10). Nulio tiesioginis ir papildomas kodai
sutampa ir yra lygus 0. Lentelėje 2.2 pateikiame fiksuoto kablelio skaičių pavyzdžiai. Kaip gauti
papildoma kodą
23
3.
lentele: Fiksuoto taško skaičių pavyzdžiai
šešioliktaine skaičiavimo sistema, parodysime vėliau, nagrinėdami aritmetinius veiksmus įvairiomis
skaičiavimo sistemomis.
Kaip matome iš lentelės 3 baite galima saugoti skaičius iš diapazono,−27 s 27 − 1, tai
atitinka −128 s 127. Analogiškai žodyje galima saugoti skaičius iš diapazono −215 s 215 −1, tai
atitinka −32768 s
32767.
2.5 Slankaus kablelio skaičių vaizdavimasSlankaus kablelio skaičių s bet kuria skaičiavimo sistema galima užrašyti taip:
s = n · ap
čia
n - taisyklingoji trupmena, vadinama skaičiaus mantise;
a - skaičiavimo sistemos pagrindas;
p - sveikasis skaičius, vadinamas eile.
24
Kiek vietos skiriama mantisei ir eilei priklauso nuo konkretaus aritmetinio loginio įrenginio (angl.
Atrimetic logic unit - ALU), todėl šito čia detaliau nenagrinėsime.
2.6 Aritmetines operacijos įvairiomis skaičiavimo sistemomis
Kadangi kompiuteris informacija saugo tik dvejetaine skaičiavimo sistema, tai mums įprastą
dešimtaine sistema galima vartoti įvedant pradinius duomenis bei spausdinant apskaičiuotus
rezultatus. Kompiuteris ne tik saugo informacija dvejetaine forma, bet ir veiksmai atliekami šioje
sistemoje. Šiame skyrelyje parodysite, kaip galima atlikti aritmetinius veiksmus kitomis
skaičiavimo sistemomis.
Jeigu, sudedant du skaitmenis, gautas skaičius w yra lygus ar didesnis už vartojamos skaičiavimo
sistemos pagrindą, tai i atitinkama pozicija rašomas skaitmuo d=w-a, o prie vyresnes pozicijos
pridedamas perkėlimo vienetas. Kai w < a, tai jis pakeičiamas vartojamos skaičiavimo sistemos
skaitmeniu. Ši taisykle taikoma ne tik dešimtainei, bet ir kitoms skaičiavimo sistemoms. Pateikiame
sudėties pavyzdžius įvairiomis skaičiavimo sistemomis:
Atimdami viena skaitmenį iš kito, elgiamės taip pat, kaip vartodami dešimtaine skaičiavimo
sistema, kai atėminio skaitmuo mažesnis arba lygus turinio skaitmeniui. Kai atėminio skaitmuo yra
didesnis už turinio atitinkama skaitmenį, iš vyresnes pozicijos skolinamas 1 ir atitinkamas turinio
skaitmuo padidinamas skaičiavimo sistemos pagrindu, galiausiai iš gauto skaičiaus atimamas
atėminio skaitmuo. Ši taisykle visoms skaičiavimo sistemoms. Pateikiame atimties pavyzdžiu
įvairiomis skaičiavimo sistemomis:
Atimties ir sudėties veiksmais taip pat apskaičiuojami vykdomieji ar santykiniai
adresai.
Atimties operacija galima efektyviai panaudoti skaičiaus papildomam kodui skaičiuoti
t.y. versti skaičiaus iš teigiamu i neigiamus, bei atvirkščiai. Prisiminkime, kad aštuonetaine arba
25
šešioliktaine skaičiavimo sistema kompaktiškai atvaizduoja dvejetaine skaičiavimo sistema pateikta
informacija. Aštuonetaine skaičiavimo sistema - tris, šešioliktaine keturis kartus trumpiau
pavaizduoja žodžiu ar baitu turini. Šiomis skaičiavimo sistemomis taip pat galima paprasčiau gauti
ir atvaizduoti skaičiaus papildoma kodą. Tereikia norima skaičių atimti iš didžiausio galimo
skaičiaus (šešioliktainėje skaičiavimo sistemoje: FF(16) arba FFFF(16), priklausomai nuo to kaip
vaizduojamas skaičius). Gautas skirtumas padidinamas vienetu yra skaičiaus papildomas kodas.
Sakykime norime gauti skaičių −26(8) ir −16(16) papildoma kodą. Papildomas kodas įrašytas baite
atrodytu taip:
377(8) − 26(8) = 351(8); 351(8) + 1 = 352(8)
FF(16) − 16(16) = E9(16);E9(16) + 1 = EA(16)
Tie patys skaičiai įrašyti žodyje atrodytu taip:
177777(8) − 26(8) = 177751(8); 177751(8) + 1 = 177752(8)
FFFF(16) − 16(16) = FFE9(16); FFE9(16) + 1 = FFEA(16)
2.7 Informacijos apdorojimo principai kompiuteryje
Svarbiausia kompiuterio dalis - procesorius - gali atlikti aritmetines, logines,
palyginimo bei skaičiavimo proceso valdymo operacijas. Norint sudaryti skaičiavimo algoritmą,
pirmiausia reikia žinoti, kokias elementarias operacijas gali atlikti procesorius, ir skaičiavimo
procesą suskaidyti i tas operacijas, nurodant jų eiles tvarka. Atliekant tokias operacijas programoje
reikia nurodyti atitinkamas komandas ir apdorojamus duomenis. Paprastai operacijų duomenys
vadinami operandais. Todėl, nurodant komanda, reikia nurodyti penkis elementus: komandos kodą,
pagal kuri kompiuteriui nurodoma kokia elementaria operacija reikia atlikti ir keturis adresus.
Pirmieji du adresai rodo, kur atmintyje yra duomenys, vieno adreso reikia rezultatui ir dar vieno
adreso - paskesnei komandai. Tokios komandos vadinamos 4 adresu komandomis. Komandose gali
buti nurodomi ne operandu adresai, o patys
operandai. Pavyzdžiui, apskaičiuojant išraiška i = j + k, galima nurodyti tokia simboline komanda:
čia :
26
ADD - simbolinis sudėties komandos kodas;
j, k, i - duomenų bei rezultato adresai;
p - paskesnes komandos adresas.
Matome, kad ši komanda yra ilga, jai užrašyti reikia daug atminties. Todėl
pabandykime sutrumpinti komanda. Jeigu programa vykdytume nuosekliai komanda po komandos,
tai paskesnes komandos nereikėtų nurodyti, tuo pačiu sutrumpėtu ir pati komanda. Tada tai paciai
operacijai atlikti galima nurodyti tokia komanda:
kuri reikštu, kad prie kintamojo j reikia pridėti kintamąjį k ir rezultatą užrašyti kintamajame i.
Tokios komandos vadinamos 3 adresu komandomis. Šiuo atveju paskesnes komandos adresą
nurodo komandos skaitiklis. Norint dar labiau sutrumpinti komanda, reikia panaikinti dar viena
operando adresą. Tokiu atveju komandoje paliekami 2 adresai, tačiau dabar gautas rezultatas turi
buti įrašomas i viena iš duomenų. Šiuo atveju aišku, komanda atmintyje užima mažiau vietos, tačiau
programuoti sudėtingiau. Tai pačiai išraiškai apskaičiuoti dabar reikia dviejų komandų:
Pirmoji komanda (MOVE) kintamąjį j įrašo i kintamojo i vieta, o antroji - prie jo prideda kintamąjį
k ir gauta suma įrašo i ta pačia vieta, t.y. i. Tokios komandos vadinamos 2 adresu komandomis.
Galima dar labiau sutrumpinti komanda joje paliekant tik vieno operando adresą, tačiau operacija
atliekama su dviem operandais. Palikus komandoje tik viena operandą, procesoriuje išskiriama
speciali atmintis, vadinama akumuliatoriumi, ir visos operacijos atliekamos su duomenimis,
esančiais šiame akumuliatoriuje ir operande, kurio adresas nurodytas komandoje. Gautas rezultatas
taip pat paliekamas akumuliatoriuje. Toks adresavimo būdas sutrumpina komandas, tačiau išauga jų
skaičius. Pavyzdžiui, užrašant komandas ankstesnei išraiškai apskaičiuoti, šiuo atveju reikėtų rašyti:
pirmoji komanda (LOAD) patalpina i akumuliatorių kintamąjį j, antroji padidina akumuliatoriaus
turini kintamojo k reikšme, trečioji (STORE) - rezultatą įrašo i kintamąjį i. Tokios komandos
27
vadinamos vieno adreso komandomis. Kyla klausimas: ar galima sukurti toki kompiuteri, kurio
komandose nereikėtų nurodinėti nei vieno adreso? Pasirodo - galima. Tereikia duomenis saugoti
steke. Stekas - tai toks informacijos saugojimo būdas, kai galima kreiptis tik i paskutinįjį steko
elementą: rašant į steką gale prirašomas naujas elementas, skaitant- paimamas paskutinysis. Taigi,
jeigu butu steko elemento įrašymo ir skaitymo komandos, tai kitoms procesoriaus komandoms
nereikėtų adresu. Apskaičiuojant ankstesne išraiška, gali buti tokios komandos:
Komanda ADD ir kitos panašios komandos vadinamos neadresuotomis. Matome, kad taikant
įvairius adresavimo budus, keičiasi programavimo stilius, vienur mažiau komandų, kitur tam
pačiam skaičiavimui jų reikia daugiau. Pavyzdžiui, apskaičiuodami išraiška i = j + k + l + m,
vartokime tik vieno ir trijų adresu komandas. Vieno adreso komandos:
Trijų adresu komandos:
Pasižiūrėkime į sudarytu programų ilgi. Nepaisant to, kad vieno adreso komandų programa šiuo
atveju sudaryta iš daugiau komandų negu programa parašyta trijų adresu komandomis, vieno adreso
komandų programai reikia mažiau atminties.
Išvados:
28
Šaltinių sąrašas
http://mokslai.lt/referatai/referatas/611/desimtaines-skaiciavimo-sistemos-atsiradimas.html
http://www.personalas.ktu.lt/~ignmart/kfp/programavimas_asembleriu.pdf
http://www.mif.vu.lt/~ragaisis/InfIvadas/SkSistemos.htm
http://lt.wikipedia.org/wiki/Dvejetain%C4%97_skai%C4%8Diavimo_sistema
http://gama.vtu.lt/biblioteka/IT/5_paskaita.htm
Kompiuterika moksleiviams ir studentams / B. Burgis ir kt., Kaunas: Technologija.-1999.
29