Tre*_*ill 0 c floating-point int bitwise-operators
如何将int转换为float(返回为无符号,但解释为float)?我不能使用任何高级语言结构,如联合,只有按位操作,控制逻辑(if/while),+和 - 等.
当然.您当然可以从原始字节缓冲区构造浮点数.单精度floats在IEEE-754中表示为32位值,并且可以非常容易地表示整数空间.IEEE浮点上的维基百科条目描述了各种格式.您需要做的就是找出要设置或测试的位.查看维基百科页面上的单精度,以获得有关位的详细描述.这是一个开始:
float convert_int(unsigned int num) {
float result;
unsigned int sign_bit = (num & 0x80000000);
unsigned int exponent = (num & 0x7F800000) >> 23;
unsigned int mantissa = (num & /* insert mask value here */);
/* you can take over from here */
return result;
}
Run Code Online (Sandbox Code Playgroud)
我留下了很多想象力,但我觉得这是一个家庭作业问题.一旦你理解了我写的部分,就应该很容易做其余部分.一个更好的解决方案是使用a union,但我会将其作为练习留给读者.