将int转换为C中的float(无转换)

如何将int转换为float(返回为unsigned,但解释为float)? 我不能使用任何高级语言结构,如联合,只有按位操作,控制逻辑(if / while),+和 – 等。

当然。 您当然可以从原始字节缓冲区构造浮点数。 单精度float在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; } 

我留下了很多想象力,但我觉得这是一个家庭作业问题。 一旦你理解了我写的部分,就应该很容易做其余部分。 一个更好的解决方案是使用union ,但我也会将其作为练习留给读者

如果您不想使用任何算术或按位运算符,那么您可以使用方法

  float convrt(int x) { return x; } 

它将返回浮动…你可以在主要validation它…

  void main() { int x=5; cout<<"size of x=" << sizeof(x); cout<<"size of convrt(x)=" << sizeof(convrt(x)); } 

它将输出为

  size of x=2 size of convrt(x)=4 

这意味着它被转换为浮动。 🙂