fixed-point-Arithmetik und Vergleich

10/12/2009 - 09:36 von Curtis Newton | Report spam
Hallo,

ich portiere gerade mal testweise einigen Code von floating-point zu
fixed-point-Arithmetik (der entsprechende Typ heißt bei mir _iq) und
habe irgendwie einen Knoten im Hirn, wenn es um Vergleiche geht. Die
fixed-point-Variable wird dabei intern durch einen int32 repràsentiert.
Die entsprechenden Funktionen zum multiplizieren, dividieren usw. habe
ich.

Ein Vergleich von _iq größer oder kleiner 0 ist ja klein Problem, da das
Vorzeichenbit bei int32 und _iq an der gleichen Stelle steht :-)

Wie bekomme ich aber schnell den Vergleich mit anderen Zahlen ungleich 0
hin? Beispiel:
_iq fpz=3.1234 (also wenn man _iq nach float umrechnen würde...)
int vz =3

Will ich jetzt _iq und vz vergleichen, müsste ich ja _iq nach float
umrechnen und dann den Vergleich machen. Unschön, oder? Geht das besser?

Genauso beim Vergleich zwischen zwei _iq-Zahlen.

C.
 

Lesen sie die antworten

#1 Thomas Richter
10/12/2009 - 10:02 | Warnen spam
Curtis Newton schrieb:

ich portiere gerade mal testweise einigen Code von floating-point zu
fixed-point-Arithmetik (der entsprechende Typ heißt bei mir _iq) und
habe irgendwie einen Knoten im Hirn, wenn es um Vergleiche geht. Die
fixed-point-Variable wird dabei intern durch einen int32 repràsentiert.
Die entsprechenden Funktionen zum multiplizieren, dividieren usw. habe
ich.

Ein Vergleich von _iq größer oder kleiner 0 ist ja klein Problem, da das
Vorzeichenbit bei int32 und _iq an der gleichen Stelle steht :-)

Wie bekomme ich aber schnell den Vergleich mit anderen Zahlen ungleich 0
hin? Beispiel:
_iq fpz=3.1234 (also wenn man _iq nach float umrechnen würde...)
int vz =3

Will ich jetzt _iq und vz vergleichen, müsste ich ja _iq nach float
umrechnen und dann den Vergleich machen. Unschön, oder? Geht das besser?



Fixpoint ist ja nur eine Skalierung von Ganzzahlen. Beim Vergleich
zwischen fixpoint und float musst Du also entweder die Fixkommazahl in
eine Fließkommazahl umwandeln (durch Division durch die Skalierung) oder
die Fließkommazahl mit der Skalierung multiplizieren und dann vergleichen.

Genauso beim Vergleich zwischen zwei _iq-Zahlen.



Dazu kannst Du die Integer-Repràsentation direkt vergleichen, denn beide
Zahlen sind ja auf die gleiche Weise skaliert.

Grüße,
Thomas

Ähnliche fragen