# Board index » delphi » Floating Point and Fixed Point calculations HELP

## Floating Point and Fixed Point calculations HELP

I don't understand fixed point calculations in detail.  Does anyone have
a program that shows the use of them and how they are implemented?

## Re:Floating Point and Fixed Point calculations HELP

##### Quote
Jim Waggener <crea...@infi.net> wrote:
>I don't understand fixed point calculations in detail.  Does anyone have
>a program that shows the use of them and how they are implemented?

Possibly I don't understand your question, but are you refering to
"Fixed Point" numbers as enumerable types such as Word,Byte,and
Integer, whereas Floating Point Types are like the Real type?

dpwat...@ucdavis.edu  (Dan Watson)

## Re:Floating Point and Fixed Point calculations HELP

In <40uq6l\$...@mark.ucdavis.edu> dpwat...@ucdavis.edu (Dan Watson) writes:

##### Quote
>Jim Waggener <crea...@infi.net> wrote:
>>I don't understand fixed point calculations in detail.  Does anyone have
>>a program that shows the use of them and how they are implemented?
>Possibly I don't understand your question, but are you refering to
>"Fixed Point" numbers as enumerable types such as Word,Byte,and
>Integer, whereas Floating Point Types are like the Real type?

I think he means interpret integers to do some 'fraction-work'

EXAMPLE:
Lets say that Register AX is interpreted as follows:
AH is the whole number;
AL is the fraction:

Then the value 0.5 (1/2) is filled in like this:
AH := 0
AL := \$80 (.5) (AX := \$0080)

(I'm using the Intel registers for this)

If you add this number to itself,
ASM
MOV AH,\$00
MOV AL,\$80

END
the result is:
AH = 1
Al = 0 ( 0.5 + 0.5 = 1.0  ...)  (AX=\$0100)

Subtraction works about the same, and multiplication works like this:
(I think)

ASM
MOV AX,\$0080 (AX:= 0.5)
MOV BX,2     (We are going to multiply by 2; SHL's would be better)
XOR DX,DX    (DX:=0 Not sure if I need to do this before mult.)

MUL AX       (DX:AX := AX * AX)
END
The result is that DL contains the whole number to be
moved to AH, and AH contains the fraction to be moved to AL.
(If DH<>\$00 then you have overflow (I'm only looking into UNsigned here)

Result: DX=\$0000 AX=\$4000
AH -> AL (AL := \$40 is .25 (1/4))
DL -> AH (AH := \$00 is 0)

These are the base principles of Fixed point calculation as fast
replacements of REAL's and simular stuff.

If anyone notices a mistake, please correct it, since I've never needed
FixedPointCalculations.

Greetings, Mark
--
ma...@sci.kun.nl  'No-one is perfect in this unperfect world'
Mark Bijster                              -Ziggy Marley-
Nijmegen, The Netherlands
http://www.sci.kun.nl/cgi-bin-thalia/smoelfind?1990/markb.html