这是什么意思"if(<an integer> & 2)"
?我看到它here但是我把它写入java并且编译器不接受它。请帮助我!
答案 0 :(得分:5)
那是因为Java并不隐含0
到false
。
在C ++中,0
为false
,因此1 & 2
= 0,这是假的。
在Java中,1 & 2
仍为0,但0不能视为false
,因此编译器告诉您类型不匹配。
答案 1 :(得分:5)
必须是if ((integer & 2) != 0)
。
Java不会将true
和0
的正整数识别为false
中的C++
。
否则它会测试右边的第二位是否设置,即它是1。
答案 2 :(得分: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
答案 3 :(得分:1)
这被称为“按位和”。它接受两个参数并返回一个整数值,只有两个参数中的1位设置为1,其余的都为0。
在Java中不起作用的原因是因为Java if
语句只接受boolean
值。
答案 4 :(得分:1)
&
符号采用两个给定数字的按位AND。
例如,以二进制取5和7:
0101 & 0111 = 0101
更多信息here
当在IF语句中使用时,编译器将基本上检查结果数字是否为0并返回false,或者如果它是任何其他数字,它将返回true。