Posted By: Hawk (Wanna be pinetree) on 'CZprogram'
Title: Re: Fixpointova matematika ;-)
Date: Fri Mar 21 12:18:01 1997
> Caute !
>
> Potreboval bych vedet neco o subj. Zatim pouze vim, ze se realne cislo
> da napr. zapsat do dvou 16bit. promennych, pricemz v prvni je cela cast a
> vdruhe cast desetinna. Jdou takto zapsana cisla scitat asi takhle ????:
Cely trik fixpointove aritmetiky je v nahrazeni realnych cisel celymi.
Pri tom se samozrejme neco ztrati, konkretne tato cisla maji omezenou presnost
(pocet des. mist) a hlavne omezeny interval nejmensiho a nejvetsiho cisla.
Kdyz x chces vyjadrit pomoci 2 celych cisel (coz je jen jiny pohled na jedno
cele cislo) a, b, plati:
x = a+b/m, kde a je signed, b unsigned, m je velikost mnoziny vsech hodnot b
pak je jasne, ze x1*y1 = (a1+b1/m)*(a2+b2/m) = a1*a2 + (a1*b2+b1*a2)/m +
(b1*b2)/(m*m), pricemz posledni clen muzes rovnou zahodit, neprojevi se
(je pod presnosti ulozeni cisla)
tedy
x1*x2 = (a1*a2) + (a1*b2+b1*a2)/m
Jednodussi je to v tvem pripade dat cely do 32-bit registru a pouzit 32-bit
nasobeni a brat jako vysledek jen hornich 32 bitu vysledku.
> Mam li cislo 0.5 je jeho prezentace 0000:5000H nebo 0000:0005H ????
Ani jedno. 0.5 je 0000:8000H :)
..---.. ___ ..---.. Hawk
' 'o o` `
" rsvo1382@barbora.ms.mff.cuni.cz