位操作为什么在Java中~1返回2而不是0?
我试图对给定int的所有位求反
假设给定的数字(给定的数字是5)的二进制表示是101,它的否定(我的输出)应该是010
从最低有效位到最高有效位的每一位我都使用~来抵消它
public static void main (String[] args) throws java.lang.Exception
{
// your code go
int num = 5;
String givenNumInBinary = Integer.toBinaryString(num);
StringBuffer output = new StringBuffer();
for(int i = 0; i <= givenNumInBinary.length()-1;i++){
int msb = Character.getNumericValue(givenNumInBinary.charAt(i));
output.append(~msb);
}
System.out.println(output.toString());
}
我的输出结果是 -2-1-2
为什么呢?我做错了什么
# 1 楼答案
因为你在倒数每一个数字
而不是反转每个位
另一种解决方案是
输出