You are on page 1of 5

Leksione nga Fatmir Hoxha

Aritmetika e kompjuterit
Numrat me pikë të lëvizshme.

Shumica e kompjuterave punojnë me numra realë në sistemin dyor (binar) ndryshe nga çfarë
parapëlqehet nga njerëzit në njehsimet që bëjnë zakonisht. Në sistemin dyor përdoret si bazë numri 2
njëlloj siç përdoret numri 10 në sistemin dhjetor të numërimit. Në qoftë se shkruajmë numrin real
345.274 në mënyrë më të detajuar kemi

345.279 = 3102 + 4101 + 5100 + 210-1 + 710-2 + 910-3

Çdo numër real mund të paraqitet (në qoftë se kemi në dispozicion një pafundësi shifrash në të djathtë)
si më lart duke i shtuar edhe shenjën (+ ose –). Për shembull – është

– = – 3.14159265358979323846264338…

Shifra 8 e fundit do paraqiste kufizën 810-26.


Në sistemin dyor përdoren vetëm dy shifra: 0 dhe 1. Edhe në këtë rast mund ta shkruajmë numrin në
trajtë më të detajuar, për shembull
(1001.11101)2 = 123 + 022 + 021 + 120 +
+12-1 + 12-2 + 12-3 + 02-4 + 12-5

Ky numër në sistemin dhjetor është 9.90625, pra

(1001.11101)2 = (9.90625)10,

Kompjuterat janë në gjendje të veprojnë me numra realë që kanë vetëm një numër të fundmë e të
fiksuar shifrash. Madje dhe numri 1/10 nuk mund të ruhet saktë në një kompjuter. Ai kërkon një
pafundësi shifrash dyore:

1
= (0.0001 1001 1001 1001 …)2
10
Për shembull, në qoftë se lexojmë numrin 0.1 në një kompjuter 32-bitesh dhe pastaj e nxjerrim atë në
shtyp me 40 shifra dhjetore, fitojmë këtë rezultat: 0.10000 00014 90116 11938 47656 25000 00000
00000

Paraqitja e normalizuar e numrave

Në sistemin dhjetor, çdo numër real mund të paraqitet në trajtën e normalizuar. Kjo do të thotë
që pika dhjetore zhvendoset në mënyrë që të kemi fillimisht një numër më të vogël se 1 dhe shifra e
parë pas pikës të jetë e ndryshme nga zero, pastaj numri shumëzohet me një fuqi të plotë të 10-tës për
të marrë të njëjtin numër. Për shembull:
587.3054 = 0. 5873054  103
–0.007315 = –0.7315  10-2

Në përgjithësi, një numër real jozero x mund të paraqitet në trajtën x =  r  10n

1
ku n është një numër i plotë dhe r plotëson kushtin  r <1.
10

[Type here]
Leksione nga Fatmir Hoxha

Në të njëjtën mënyrë, ne mund të paraqesim në trajtën e normalizuar numrat në sistemin dyor. Kemi
atëherë,

x =  q  2m (1.11)
1
ku m është një numër i plotë dhe q plotëson kushtin  q <1, për x0. Numri q quhet mantisë dhe
2
numri m quhet eksponent. Të dy numrat q dhe m paraqiten në sistemin dyor.
Në një kompjuter tipik, numrat paraqiten siç u tha, por me disa kushte për q dhe m që jemi të
detyruar t’i vëmë për shkak të gjatësisë së fjalës që kemi. Për të ilustruar këtë, marrim një kompjuter
hipotetik, të cilin po e quajmë Mat-32. Ai ka një gjatësi fjale prej 32 bitesh dhe i ngjan shumë
kompjuterave që kemi në përdorim. Paraqitja e një numri real me saktësi të thjeshtë, me pikë të
lëvizshme në kompjuterin Mat-32 bëhet si në figurën 1.2. Bitet që përbëjnë një fjalë në Mat-32, kur
paraqesin një numër real jozero x =  q  2m, vendosen si më poshtë:

shenja e numrit real x (s) 1 bit (biti 0)


eksponenti i modifikuar (numër i plotë e) 8 bit (bitet 1-8)
mantisa (numri real f) 23 bit (bitet 9-31)
0 1 8 9 31

s e f

Figura 1.2 Paraqitja e një numri me saktësi të thjeshtë tek Mat-32

Një numër real jozero x =  q  2m, mund të shkruhet si numër dyor i normalizuar në mënyrë të tillë
që biti i parë jozero i mantisës të jetë para pikës dyore, dmth, q = (1.f)2. Ky bit mund të supozohet se
është 1 dhe nuk ka nevojë të ruhet në kujtesë. Mantisa do jetë në intervalin 1  q <2. Të 23 bitet e
rezervuara tek fjala për mantisën, mund të përdoren për të ruajtur 23 bite prej f. Pra, në fakt makina ka
një mantisë prej 24 bitesh për numrat me pikë lëvizshme.
Kështu, numrat jozero të normalizuar të kompjuterit janë vargje bitesh vlerat e të cilëve
paraqiten si:

x = (–1)S q  2m (1.12)
ku
q = (1.f)2 dhe m = e – 127

Këtu 1  q <2, S-është biti i shenjës së x-it (0-nëse numri është pozitiv, 1-nëse numri është negativ), m
= e–127 është eksponenti i modifikuar 8 bitesh dhe f është pjesa thyesore 23-bitëshe e numrit real x.
Një numër real i paraqitur si tek (1.12) thuhet se është në trajtë të normalizuar me pikë të
lëvizshme. Në qoftë se ai pastaj, mund të paraqitet me m shifra që zënë 8 bite dhe q e cila zë 23 bite,
ai është një numër i makinës Mat-32. Kjo do të thotë që ai mund të paraqitet në mënyrë të saktë në
këtë kompjuter. Shumica e numrave realë nuk mund të paraqiten në Mat-32. Kur një numër i tillë
ndeshet si e dhënë apo si rezultat njehsimesh, një gabim i pashmangshëm do shfaqet gjatë zëvendësimit
të tij me numrin më të afërt të makinës.
Kushti që m kërkon jo më shumë se 8 bit do të thotë se
0 < e < (11 111 111)2 = 28 – 1 = 255
Dhe vlerat e = 0 dhe e = 255 janë të rezervuara për raste të veçanta si  0,   dhe NaN (jonumër).
Meqë m = e – 127, marrim
– 126  m  127.

[Type here]
Leksione nga Fatmir Hoxha

Kështu, Mat-32 mund të pranojë numra të vegjël deri në 2–126  1.2  10–38 dhe numra të mëdhenj deri
në (2 – 2–23) 2127  3.4  1038. Kjo nuk është e mjaftueshme për një sërë njehsimesh shkencore, prandaj
ne mund të shkruajmë një program në një aritmetikë me saktësi të dyfishtë ose edhe me saktësi më të
madhe. Një numër me pikë të lëvizshme dhe saktësi të dyfishtë paraqitet me dy fjalë kompjuteri dhe
mantisa, zakonisht, ka të paktën dy herë më shumë bite. Prandaj, një numër me saktësi të dyfishtë ka
afërsisht dy herë më shumë shifra të sakta dhjetore se një numër me saktësi të thjeshtë. Më saktë, –
1023  m  1023 dhe në sistemin dhjetor do të thotë numra ndërmjet 10-307 e 10307. Kur punohet me
saktësi të dyfishtë, shpejtësia e njehsimeve ulet dy herë ose më shumë, kjo për shkak se aritmetika e
saktësisë së dyfishtë realizohet nga programe të veçanta (software) ndërsa ajo e thjeshtë realizohet
drejtpërdrejt nga kompjuteri (hardware).
Kufizimi i numrit të biteve të mantisës me 23, bën që numrat e makinës të kenë saktësi të
kufizuar me rreth 6 shifra pas pikës dhjetore, sepse biti me më pak peshë në mantisë paraqet njësi të
2–23 (ose afërsisht 1.2  10–7). Kështu numrat e shprehur me më shumë se 6 shifra dhjetore do të
përafrohen kur jepen si të dhëna në kompjuter. Gjithashtu, disa numra fare të thjeshtë dhjetorë si 1/10
apo 1/100 nuk janë numra të makinës për një kompjuter me sistem dyor.

Zeroja, infiniti dhe NaN

Në aritmetikën standarte të IEEE (Institute for Electrical and Electronic Engineers) zero paraqitet me
e=0 (një nga eksponentet e rezervuara) dhe f = 0. Biti i shenjës mund të jetë 0 ose 1, kështu ka dy trajta
për zeron: + 0 dhe –0 të cilat, me saktësi të thjeshtë paraqiten në kompjuter përkatësisht me fjalët
[00000000]16 dhe [80000000]16.
Shumicës së veprimeve aritmetike që rezultojnë me vlerën zero u jepet vlera +0. Një numri negativ që
është zero për saktësinë e kompjuterit, i jepet vlera –0.
Në mënyrë të ngjashme, ka dy trajta për infinitin: +  dhe –, të cilat, me saktësi të thjeshtë
paraqiten në kompjuter përkatësisht me fjalët [7F800000]16 dhe [FF800000]16. Zakonisht infiniti
merret si numër shumë i madh, sa herë kjo ka kuptim. Për shembull, supozojmë se x është një numër
me pikë të lëvizshme në intervalin 0< x < , atëherë çdonjëra nga shprehjet x + , x * , dhe  / x, ka
vlerën +, ndërsa x/ bëhet +0. Këtu , nënkuptohet +. Rezultate të ngjashme merren edhe për –.
NaN (Not a Number) do të thotë jonumër dhe rezulton nga ndonjë veprim i papërcaktuar si
0/0,  –, x + NaN etj. NaN paraqitet me fjalë kompjuteri ku e = 255 dhe f  0.

Numrat e përafërt të makinës

Tani kërkojmë të vlerësojmë gabimin që bëhet kur përafrojmë një numër real pozitiv x me një numër
të makinës Mat-32. Supozojmë që
x = (–1)S q  2m 1  q <2 – 126  m  127
Të gjejmë numrin e makinës që është më afër x-it. Së pari, shkruajmë
x = (1.a1 a2 …a23 a24 a25...)2  2m
ku çdo ai është 0 ose 1. Një numër i përafërt makine fitohet duke larguar thjeshtë bitet e tepërta a24
a25…. Kjo procedurë quhet këputje ose ndërprerje (chopping). Numri që rezulton pas këputjes është
x_ = (1.a1 a2 …a23)2  2m
Vëmë në dukje se x_ ndodhet në të majtë të numrit x në drejtëzën reale. Një numër tjetër i përafërt
makine ndodhet në të djathtë të numrit x. Ai fitohet me rrumbullakim nga sipër (rounding up) dmth
largojmë si më parë bitet e tepërta por tani rrisim me një njësi bitin e fundit a23. Ky numër është
x+ = ((1.a1 a2 …a23)2 + 2–23)  2m
Numri x do paraqitet me atë nga numrat x_ ose x+ i cili është më afër tij. Në qoftë se x paraqitet me
x_, atëherë kemi

[Type here]
Leksione nga Fatmir Hoxha

1 1
x – x_  x+ – x_ =  2m–23 = 2m–24
2 2
Në këtë rast gabimi relativ është i kufizuar nga
x  x 2 m24 1
   2–24  2–24
x q2 m
q
Në qoftë se x paraqitet me x+, atëherë kemi
1
x – x+  x+ – x_ = 2m–24
2
Duke arsyetuar si në rastin e parë gjejmë që gabimi relativ nuk e kalon numrin 2–24.
Gjatë njehsimeve mund të ndodhë që të shfaqet një numër i trajtës  q  2m ku m është jashtë
intervalit të lejuar nga kompjuteri. Në qoftë se m është shumë e madhe kemi tejkalim nga sipër
(overflow). Në qoftë se m është shumë e vogël kemi tejkalim nga poshtë (underflow). Për Mat-32 kjo
do të thotë përkatësisht m > 127 dhe m < –126. Kur kompjuteri ndesh në tejkalim nga sipër, si rregull,
programi ndalon automatikisht duke nxjerrë në ekran variablën NaN. Ndërsa kur ndeshet tejkalim nga
poshtë, variabla bëhet automatikisht zero dhe njehsimet në kompjuter vazhdojnë.
Ajo çka thamë deri tani për Mat-32 mund të përmblidhet: Në qoftë se x është një numër real
jozero, brenda intervalit të lejuar të kompjuterit, atëherë numri i makinës x*, më i afërt me x, plotëson:
x  x*
 2–24.
x
Duke shënuar =(x*–x)/x, mosbarazimin e fundit mund ta shkruajmë në trajtën

fl(x) = x(1 + )    2–24 (1.13)

Simboli fl(x) tregon numrin me pikë të lëvizshme të makinës x* më të afërt me x. Numri 2–24 i
mosbarazimit (1.13) quhet gabim rrumbullakimi njësi për Mat-32. Ky është, në bazë të përkufizimit,
gabimi relativ i numrit makinë fl(x) që zëvendëson numrin real x.
Rezultatet e marra për Mat-32 mund të shtrihen edhe për makina të tjera, me modifikime të
përshtatshme. Në qoftë se një makinë punon me një sistem me bazë  dhe rezervon n vende për
mantisën e numrave me pikë të lëvizshme të tij, atëherë

fl(x) = x(1 + )    

ku  = ½  1–n në rastin e rrumbullakimit të rregullt dhe  =  1–n në


rastin e këputjes. Numri  është gabim rrumbullakimi njësi dhe është një karakteristikë e kompjuterit,
sistemit të tij të shfrytëzimit dhe mënyrës së njehsimit (saktësi e thjeshtë apo e shumëfishtë)
Mund të tregohet që hapësira relative ndërmjet çdo numri x të makinës dhe dy numrave të
makinës, fqinjë me të, është afërsisht një vlerë konstante e barabartë me 2–23. Kjo vlerë është pikërisht
saktësia e paraqitjes e makinës, ose siç quhet ndryshe epsiloni i makinës.

Shembull 1.7 Cila është trajta dyore e numrit x = 2/3? Cilët janë dy numrat x+ , x_ më të afërt me të,
në makinën Mat-32? Cili prej tyre merret si fl(x)? Cilat janë gabimet absolute dhe relative të
rrumbullakimit kur paraqesim x me fl(x)?
Zgjidhje. Për të gjetur paraqitjen dyore shkruajmë
2
= (0. a1 a2 a3…)2
3
Duke shumëzuar me 2 fitohet

[Type here]
Leksione nga Fatmir Hoxha

4
= (a1. a2 a3…)2
3
Kështu, fitojmë a1 = 1 duke marrë pjesët e plota të të dy anëve.
Duke zbritur 1 nga të dy anët kemi
1
= (0. a2 a3 a4…)2
3
Duke përsëritur hapat e mëparshëm, arrijmë në rezultatin
2
x= = (0.1010…)2 = (1.010101…)2  2–1
3
Dy numrat e makinës me 23 bit pas pikës dyore, fqinjë të x, janë
x_ = (1.010101…010)2  2–1
x+ = (1.010101…011)2  2–1
të marrë përkatësisht me këputje dhe rrumbullakim nga sipër. Për të parë cili nga numrat e mësipërm,
është më afër x, njehsojmë x – x_ dhe x+ – x dhe pastaj vendosim cili prej tyre do jetë fl(x)
2
x – x_ = (0. 1010…)2  2–24 =  2–24
3
2 1
x+ – x = (x+ – x_) – (x – x_) = 2–24 –  2–24 =  2–24
3 3
Kështu, marrim fl(x) = x+, dhe gabimi absolut i rrumbullakimit është
1
fl(x) – x=  2–24
3
Që nga, gabimi relativ i rrumbullakimit do jetë
1 24
fl ( x)  x 2
= 3  2–25.
x 2/3

[Type here]

You might also like