在Java中,按位非运算符(~)反转整数或长整数位.但为什么这不可能double?是否有任何使用此操作的方法double?我正在用Java编写自己的编程语言(这不是一个家庭作业),我相信应该包括双位的按位.
任何使用按位而不是双打的方法?
编辑:这不是如何对浮点数执行按位操作的重复,因为我使用Java而不是讨论过的C.我也知道使用语言的语法没有可能的方法,但是答案似乎把它投到了double一个int.我需要保持双倍的原样,而不是将其改为int或long.
编辑:按位不是我认为不会.它似乎*-1 - 1在输入上执行.因此,我的问题现在变成:
Java没有~为浮点类型提供运算符float,double因为这样的操作没有意义.
您可以使用此方法模拟它:
public static double performNotOnDouble(double d)
{
return Double.longBitsToDouble(~Double.doubleToLongBits(d));
}
Run Code Online (Sandbox Code Playgroud)
但结果没有任何实际意义:
0.0: NaN
1.0: -3.9999999999999996
10.0: -0.43749999999999994
-1.0: 3.9999999999999996
0.01: -440.31999999999994
3.141592653589793: -1.4292036732051032
2.718281828459045: -1.6408590857704772
Infinity: -2.225073858507201E-308
-Infinity: 2.225073858507201E-308
NaN: -1.1125369292536E-308
Run Code Online (Sandbox Code Playgroud)
采用浮点类型的位补码是没有意义的,因为结果没有任何意义.
| 归档时间: |
|
| 查看次数: |
1951 次 |
| 最近记录: |