所以我现在 ~n
给了我对整数 n 的 not 操作,但是有什么方法可以将其读取为无符号整数吗?
例如~50
,我得到-51
,而我实际上想要13
。在Java中有什么办法可以做到这一点吗?
例如,二进制的 50 是 110010
。当数字反转后,我们应该得到001101
。
最佳答案
如果要保持前导零位不变,可以在“二进制非”运算后将它们设置为零。我们需要做的就是创建 11...1
掩码,其中 1 的数量等于 n
中有效位的数量,然后我们可以将所有其他值设置为零位:
int invert(int n) {
int mask = (Integer.highestOneBit(n) << 1) - 1;
return (~n & mask);
}
关于java - Java 中对 Unsigned Int 进行非操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47126402/