两个整数的Java &运算符是什么?

11

据我所了解,& 运算符类似于 && 运算符,只是 && 仅在第一个条件为真时才检查第二个条件,而 & 则无论第一个条件的结果如何都会检查两个条件。基本上,&& 只是节省了一点时间和功率。

如果是这样,那么这段代码是如何工作的呢?

int l = 0;
if ((l & 8) != 0 && (l & 4) == 0){ do something}

(l & 8)和(l & 4)的作用是什么?在这种情况下&是什么意思?


1
这是一个按位与运算符。http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html - Alexis C.
顺便说一下,这相当于 if ((l & 12) == 8) { do something } - harold
1个回答

18

& 和 && 是两个不同的运算符,但它们的区别并不是你所描述的。

& 对两个整数执行按位 AND 操作,产生一个第三个整数,其中的位设置为 1,如果两个源整数中对应的位都设置为 1;否则为 0。

&& 只适用于两个布尔值,并返回一个第三个布尔值,如果输入的两个布尔值都为 true,则结果为 true;否则为 false。


这样就清楚多了。它使用ASCII的二进制代码,还是直接使用二进制,0表示0,1表示1,10表示2等等? - nife552
使用您的术语,它使用“纯二进制0表示0,1表示1,10表示2等”,这被称为二进制数ASCII是一种将“书写字母”字符编码为二进制数(也称为字符编码)的方法。还有其他编码方式,如EBCDICUNICODE - Raffaele Rossi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接