我正在尝试编写一个程序,在输入二进制数后计算1的补码。这就是我要说的:
import java.util.Scanner;
public class BitWiseComplement {
public static void main(String[] args) {
Scanner keysIn = new Scanner(System.in);
System.out.println("Please enter your number: ");
long originalNum = keysIn.nextLong();
System.out.println(~originalNum);
}
}然而,当我输入0111011时,我得到-111012。我认为~运算符应该反转数字,这样所有的0都是1,所有的1都是0。
有什么帮助吗?
发布于 2013-10-27 01:20:04
Java运算符的作用如您所想,但请记住,~中没有无符号类型,因此当您输入一个正数(即高位为0)时,对其应用~将使其为负数(通过打开高位)。
如果您以十六进制(或其他答案建议的二进制)打印出数字,您应该会看到预期的答案。
发布于 2021-12-29 15:18:09
例如:9^15=6

public static int solution(int num) {
int bits = Integer.toBinaryString(num).length();
int maxBound = (int)( Math.pow(2, bits)-1);
return num ^ maxBound;
}https://stackoverflow.com/questions/19609566
复制相似问题