【发布时间】:2011-01-13 16:57:56
【问题描述】:
可能重复:
how to perform bitwise operation on floating point numbers
大家好!
背景:
我知道可以对图形应用按位运算(例如 XOR)。我也知道,在图形程序中,图形数据通常以浮点数据类型存储(例如,能够将数据与 1.05“相乘”)。所以对浮点数据进行按位运算应该是可以的吧?
我需要能够对浮点数据执行按位运算。我确实不想将数据转换为 long,按位操作,然后转换回浮点数。
我认为,有一种数学方法可以实现这一点,它更优雅 (?) 和/或更快 (?)。
我已经看到了一些答案,但他们无能为力,包括this one。
编辑:
另一个问题涉及空指针转换,这将依赖于更深层次的数据表示。所以它不是这样的“完全重复”。
【问题讨论】:
-
这是同一个问题,所以不能回答这个问题的人也不能回答这个问题。
-
链接文章中的有用建议在其 cmets 中:检查您使用的浮点数,检查其表示,然后相应地操作位(如果前 24 位是尾数,则屏蔽前 24 位并操纵它们)。
-
不,其他问题涉及空指针转换,这将依赖于更深层次的数据表示。
-
很少有位运算对浮点数据有意义。一些掩蔽技巧可以在一些罕见的情况下提供帮助,但在 quake 的 invSqrt 技巧之外,我从未见过任何有用的 bitmagic 在浮点数上的应用。如果你能告诉我们你想做什么操作会很有帮助。
-
所有按位运算都将依赖于底层表示(这是明确定义的),因为位只存在于底层表示中。
标签: math floating-point integer bit-manipulation