这是什么意思“if(<an integer =”“>&amp; 2)”?</an>

时间:2013-06-25 20:06:57

标签: java c++ if-statement int

这是什么意思"if(<an integer> & 2)"?我看到它here但是我把它写入java并且编译器不接受它。请帮助我!

5 个答案:

答案 0 :(得分:5)

那是因为Java并不隐含0false

在C ++中,0false,因此1 & 2 = 0,这是假的。

在Java中,1 & 2仍为0,但0不能视为false,因此编译器告诉您类型不匹配。

答案 1 :(得分:5)

必须是if ((integer & 2) != 0)

Java不会将true0的正整数识别为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。