c/c++语言开发共享按位浮点数到Int

我试图找出这个算法,但我得到谷歌的所有东西都是用铸造做的。 我需要知道细节。

所以,如果我们有一个浮点x并想要返回它的二进制表示,我们需要做什么?

我知道我们需要返回浮点数,如果它的NaN或无穷大,但其他步骤是什么?

编辑

该函数接受一个unsigned int,就像它是一个float一样,然后返回该数字所代表的整数。 我不能使用转换,只是条件和按位运算符。

    或者,使用联合:

     typedef union { float f_; int i_; } FloatBits; FloatBits fb; fb.f_ = 1.5; 

    然后fb.i_包含映射到int的float,以允许提取位。 同样,关于类型大小的常见假设 – 您可以使用sizeofvalidation这些。

    使用这种方法,您可以直接设置fb.i_的位, fb.i_它们映射回float

    要测试32位值是否表示NaN(如果它是浮点数),您可以检查其无符号值是否大于无穷大的表示。

     int n = if((n & 0x7FFFFFFF) > 0x7f800000) // is NaN 

    需要删除符号,因为NaN可以将负号位设置为1(尽管NaN不是正数或负数)


    如果你想知道浮点数是否为NAN,你可以使用

     float f = NAN if (f != f) // is NAN 

    与Infinity比较

     float f = INFINITY; if (f == INFINITY) 

    c编程语言中的float遵循IEEE浮点运算标准(IEEE 754) 。

    您可以使用代码将float转换为int

    int i = *(int *)&f; // f is the float variable you want to convert

    然后根据IEEE 754标准自行解释int

      以上就是c/c++开发分享按位浮点数到Int相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/559783.html

      (0)
      上一篇 2021年1月27日
      下一篇 2021年1月27日

      精彩推荐