这是什么意思"if(<an integer> & 2)"?

What is this meaning "if(<an integer> & 2)"?

本文关键字:integer gt an lt 是什么 意思 if      更新时间:2023-10-16

这是什么意思"if(<an integer> & 2)"?我在这里看到了它,但我把它写成了java,编译器不接受它。请帮帮我!

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

Java不像C++那样将正整数识别为true,将0识别为false

否则,它测试从右边起的第二个位是否被设置,即它是1。

这是因为Java不会隐式地将0大小写为false

在C++中,0false,所以1 & 2=0,这是错误的。

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

这是一个逐位运算符,提供第二个位。

例如:

# 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

这被称为"位和"。它接受两个参数并返回一个整数值,其中两个参数中只有1位设置为1,其余均为0。

在Java中不起作用的原因是Java if语句只接受boolean值。

&符号采用两个给定数字的逐位AND。
例如,取二进制中的5 AND 7:
0101 & 0111 = 0101
更多信息点击这里

当在IF语句中使用时,编译器将本质上检查结果数字是否为0并返回false,或者如果是其他数字则返回true。