这是什么意思"if(<an integer> & 2)"
?我在这里看到它,但我将它写到 java 并且编译器不接受它。请帮助我!
问问题
367 次
5 回答
5
那是因为 Java 不会隐式大小写0
为false
.
在 C++ 中,0
is false
,所以1 & 2
= 0 这是错误的。
虽然在 Java 中,1 & 2
仍然是 0,但 0 不能被视为false
,因此编译器会告诉您类型不匹配。
于 2013-06-25T20:08:12.163 回答
5
一定是if ((integer & 2) != 0)
。
Java 无法将正整数识别true
为.0
false
C++
否则,它测试是否设置了右边的第二位,即它是 1。
于 2013-06-25T20:08:52.557 回答
3
它是一个位运算符,并为您提供第二位。
例如:
# In binary:
1 = 0001 & 2: 0000
2 = 0010 & 2: 0010
3 = 0011 & 2: 0010
4 = 0100 & 2: 0000
5 = 0101 & 2: 0000
6 = 0110 & 2: 0010
于 2013-06-25T20:10:32.220 回答
1
这就是所谓的“按位与”。它接受它的两个参数并返回一个整数值,只有两个参数中为 1 的位设置为 1,其余均为 0。
在 Java 中不起作用的原因是因为 Javaif
语句只接受boolean
值。
于 2013-06-25T20:10:01.350 回答
1
该&
符号采用两个给定数字的按位与。
例如,在二进制中取 5 AND 7:
0101 & 0111 = 0101
更多信息在这里
当在 IF 语句中使用时,编译器本质上将检查结果数字是否为 0 并返回 false,或者如果它是任何其他数字,它将返回 true。
于 2013-06-25T20:13:26.143 回答