我需要使用按位运算符为float创建函数abs,此函数返回浮点值。
我无法使用<
或>
。
我试试这个
(float)((int)f ^ ((int)f>>31)) - ((int)f>>31)
但对于-2.5
值,我得到2.0
,这是不正确的。
你能帮助我吗?
答案 0 :(得分:3)
你可以这样做
float abs = Float.intBitsToFloat(Float.floatToIntBits(x) & 0x7FFFFFFF);
答案 1 :(得分:2)
浮点数的最重要位是符号位。所以...你应该能够使用按位&amp;运算符清除该位以获得绝对值。
使用它作为你的面具按位和你的值:
0x7fffffff