可能重复:
how to perform bitwise operation on floating point numbers
大家好!
背景:
我知道可以在图形上应用按位运算(例如XOR)。我也知道,在图形程序中,图形数据通常存储在浮点数据类型中(例如,能够将数据“乘以”1.05)。因此必须能够对浮点数据执行按位运算,对吗?
我需要能够对浮点数据执行按位运算。我不想要将数据转换为long,按位操纵它,然后强制转换为float。
我认为,存在一种实现这一目标的数学方法,它更优雅(?)和/或更快(?)。
我看到了一些答案,但他们无能为力,包括this one。
修改
另一个问题涉及无效指针转换,它依赖于更深层次的数据表示。所以这不是一个“完全重复”。
答案 0 :(得分:5)
当“图形数据”点击屏幕时,它们都不是浮点数。按位操作实际上是在位串上完成的。由于对二进制的编码方案一致,因此按位运算仅对数字有意义。除了提取指数或尾数之外,试图对浮点数进行任何类型的逻辑按位运算都是通往地狱的道路。
基本上,你可能不想这样做。为什么你认为你呢?
答案 1 :(得分:0)
浮点数只是内存中二进制文件的另一种表示形式,因此您可以:
这应该至少与非负值一起使用,并且应该没有可观的计算开销,至少在像C ++这样的非托管上下文中。也许你在做手术时必须掩盖一些比特,并且 - 根据类型 - 你可能需要单独处理指数和基数。