Bir int'yi, değerin işaret üssüne ve fraksiyon bileşenlerine bölünmüş kayan nokta değerine dönüştüreceğine inandığım bir işleve sahibim. Float değerlerini göstermek için IEEE 754'ü kullanma.Kayan nokta değerlerini ikiye katlama ve bölme
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;
}
Ben bu kayan nokta gösteriminden yarıya veya ikiye değerlerini hesaplamak olabilir ancak nasıl emin değilim.
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 ...
}
Hemen değişim üs yarıya indirme sonra. Float = Fraksiyon * 2^üs * (işaret? -1: 1). Not, burada üstel imzalı bir değer. – slavanap