Ich habe die Funktion, die ich glaube, wird ein int in einen Gleitkommawert umgewandelt in den Vorzeichen Exponenten und Bruch Komponenten des Wertes. Verwenden von IEEE 754 zur Darstellung von Float-Werten.Verdoppelung und Division von Fließkommawerten
unsigned test(unsigned x) {
// split the given bits of sign exponent and fraction, combine to return
unsigned int sign = (x & 0x80000000) >> 31;
unsigned int expo = (x & 0x7F800000) >> 23;
unsigned int frac = (x & 0x007fffff);
return (sign << 31) | (expo << 23) | frac;
}
Ich bin aber nicht sicher, wie ich die halbiert oder verdoppelt Werte aus dieser Gleitkommadarstellung berechnen könnte.
unsigned doubled(unsigned x) {
// get float
// float = unsigned int to float
// doubleFloat = 2*f
// if float is not a number
// return unsigned float
// else return unsigned integer of half float
unsigned int sign = (x & 0x80000000) >> 31;
unsigned int expo = (x & 0x7F800000) >> 23;
unsigned int frac = (x & 0x007fffff);
if (expo == 0xff)
return uf;
else ...
}
Gerade Änderung Exponenten halbieren. Float = Bruch * 2^Exponent * (Zeichen? -1: 1). Beachten Sie, dass hier der Exponent ein vorzeichenbehafteter Wert ist. – slavanap