所以我现在~n
给了我关于整数n的not操作,但有没有什么方法可以把它看成无符号的int?
例如~50
,当我真正想要-51
时,我得到13
。有没有办法在Java中做到这一点?
例如,二进制50是110010
。当数字反转时,我们应该得到001101
。
答案 0 :(得分:1)
如果你想保持前导零位不变,你可以在'二进制不是'之后将它们设置为零。操作。我们所需要的只是创建11...1
掩码,其数字1等于n
中的有效位数,然后我们可以将所有其他位设置为零:
int invert(int n) {
int mask = (Integer.highestOneBit(n) << 1) - 1;
return (~n & mask);
}
答案 1 :(得分:0)
有32位,所有那些租用的零都变为1。
int mask = Integer.highestOneBit(n) << 1:
return ~n & - - mask;