如果我想找到24位二进制补码整数的绝对值,是否最好屏蔽该整数,并且在需要时取反原始数字?
为了更好地说明我的意思:
public static int bitwiseAbsoluteValue(int n) {
if (n == 0x800000) {
return 0x000000;
} else {
if ((n & 0x800000) == 0x800000) {
return (~n + 1) & 0x7FFFFF;
} else {
return n;
}
}
}
这行得通吗?
最佳答案
您还需要屏蔽第一个返回值:
return (~num + 1) & 0x7FFFFF;
如果传入的值是
0x800000
,则需要计算要执行的操作。当前函数将返回0
,这显然是不正确的。