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

Search the boards