java为什么按位AND运算不适用于值>=8?
这个程序检查给定的数字是否是2的幂。该代码在n=7之前正常工作,并为输入n<=八,
输入n=4; 产量:0; 预期产出:0
输入:n=8; 产出:104; 预期产出:0
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
String s = Integer.toBinaryString(n);
String s2 = Integer.toBinaryString(n-1);
Integer i = Integer.parseInt(s);
Integer j = Integer.parseInt(s2);
System.out.println(i&j);
input.close();
}
# 1 楼答案
通过调用
toBinaryString
和parseInt
,可以将数字转换为二进制,然后将二进制解释为十进制,从而扭曲数字。跳过这个:# 2 楼答案
从int到string再到Integer的不必要转换。您可以直接按位执行和int之间的操作。请参阅以下代码以了解操作以及二进制转换-
输出