在Java中对两个双打进行异或

Ete*_*oob 7 java bit-manipulation

如何在JAVA中对两个双打异或?

简单的'^'不适用于双打......我是否必须将双精度转换为二进制形式并按位进行?或者还有其他方法吗?

Mar*_*iot 14

如果你的意思是这样按位,你需要使用Double实用程序函数来获取long表示,然后在最后转换回double:

double c = Double.longBitsToDouble(
    Double.doubleToRawLongBits(a) ^ Double.doubleToRawLongBits(b));
Run Code Online (Sandbox Code Playgroud)

  • 切勿将 XOR 运算后的 long 转换回 double,因为有许多位模式会导致 NaN、+无穷大和 -无穷大以及许多其他表示相同数字的位模式集(一个是规范的,其余的是非正规的,最常见的+0 和 -0、+0e1、+0e2 等) (2认同)