“Pikpresja levizese” (floating point)

Apo ndryshe e quajtur ‘floating point‘ eshte ura e cila ndan shkencen tradicionale komputerike nga computing shkencor.
Per kete teme shume programues apo student kane paqartesite e tyre, keshtu qe do perpiqemi ti kushtojm pak me vemendje se temave te tjera..
Kur themi floating point duhet te marrim parasysh standartet dhe me sakt standartin IEEE 754
http://754r.ucbtest.org/standards/754xml.html (per me shume info)
IEEE 754 eshte standarti per llogaritjen dhe paraqitjen ne pik presje levizese.
Ky standart ben te mundur realizimin e algoritmeve numerik me precizion te lart duke u mbeshtetur ne probabilitet.
QELLIMI i te gjithe kesaj eshte qe te shkruhen numra real shume te medhenj ne hapesira tejet te kufizuara.
Ne ate kohe nuk ka pasur kaq shume meomorje ne dispozicion saç kemi sot, keshtu qe te mendohet se sa bit do te duheshin per te llogaritur madhesine e nje elektroni, apo largesin midis Hong-kongut me Ohayo..
Ne te dyja rastet, si kur kemi te bejm me nje numer shume te madh ashtu dhe kur kemi te bejm me nje numer me te vogel nuk eshte shume e rendesishme precizioni se ç’beri 20000000000000000000000000000000000000000000000000000000000000021 me
20000000000000000000000000000000000000000000000000000000000000022-shin
apo ç’fare ndryshimi ka:
0,934902000000000000000000340000000000000000000430000000000000000000000019
0,934902000000000000000000340000000000000000000430000000000000000000000018
Pra ndryshimi eshte shume i vogel dhe ne shumicen e operacioneve i pallogaritshem.
E gjith kjo teori eshte e bazuar ne nje rregull qe dot na duhet per ta mbajtur mend:

“Me nje numer te fundem shifrash eshte e mundur te paraqesim vetem nje numer racional qe jep perafersisht numrin e dhene”

Perodrim presje dhjetore levizese ne vend te asaj fikse per arsyen e meposhtme..
Nese perdorim presje fikse (jo levizese) atehere jemi te detyruar qe numrin 534 000 000 000 ta paraqesim si 534 ∗ 10⁹ nderkohe qe nese perdorim presjen levizese do te shkruanim 5,34 ∗ 10¹¹
Duke kursyer hapesire ne memorje.
Principi i “Floating point”
Levizet presja dhjetore deri ne nje pozicion te pershtatshem duke mos neglizhuar keto levizje ne eksponent. [qe do te thote se per ç’do levizje qe behet me presjen dhjetore kjo levizje reflektohet dhe ne variacionet e eksponentit.
Eshte metode shume e rendesishme pasi lejon qe te parqesim numra shume te medhenj dhe shume te vegjel ne nje menyre shume kompakte.
Po ashtu nje numer si 622,197 do te mund te paraqitej ne 6,22197 ∗ 10⁵ nen veshtrimin e “levizjes se presjes dhjetore”
“TABLOJA”

Siç jemi mesuar ti quajm numrat zakonisht ndahen ne dy pjese, ne fraksionin (mantissa) dhe ne pjesen eksponenciale.
Kurse ne rastin tone kur kemi te bejm me presje levizese kemi 3 pjese: (marrim 17 si numer)

1 bit

5 bite

8 bite

(Shenja) Eksponenti Mantissa
17 = 17.0 ∗ 10⁰ = 1.7 ∗ 10¹ = 0.17 ∗ 10² dhe ne binar i bie:
17₁₀ = 10001₂ ∗ 2⁰ = 1000.1₂ ∗ 2¹ = 100.01₂ ∗ 2² = 10.001₂ ∗ 2³ = 1.0001₂ ∗ 2⁴ = 0.10001₂ ∗ 2⁵

Ky (0.10001₂ ∗ 2⁵) eshte rezultati yne, le te punojm sipas standartit IEEE 754 me te 😉
Kush eshte shenja?
Shenja eshte 0 e pare perpara presjes.
Kush eshte Mantissa?
Mantissa eshte trupi mbas presjes dhe na thote qe kemi 10001 nderkoh qe kemi 8 bite.. Pun e madhe, e plotesojm mbetjen me 0 dhe kemi 10001000 :)
Sa eshte eksponenti?
Eksponenti eshte 5 ne sistemin decimal dhe ne binar i bie te jete 101 por kemi ne dispozicion 5 bite keshtu qe na del 00101
Dhe paraqitja e numrit 17 sipas standartit IEEE 754 i bie te jete:

0 [1 bit]

0 0 1 0 1 [5 bite]

1 0 0 0 1 0 0 0 [8 bite]

(Shenja) Eksponenti Mantissa

Kjo metod eshte shume komode pasi mund te paraqesim numra shume me te medhenj se ky qe morem shembull : 65536 = 0.1₂ ∗ 2¹⁷
Perfaqsimi i saj do te ishte :

0 [1 bit]

1 0 0 0 1 [5 bite]

1 0 0 0 0 0 0 0 [8 bite]

(Shenja) Eksponenti Mantissa

Ky ishte vetem nje trajtim i pergjitshem sa per te sqaruar konceptin normalisht si teme eshte shume me e gjate :)