在运算符“&”的java中按位AND

时间:2013-07-31 10:54:41

标签: java bitwise-operators bitwise-and

我刚刚阅读了以下代码:

byte[] bts = {8, 0, 0, 0};
if ((bts[i] & 0x01) == 0x01)

这是否与

相同
if (bts[i] == 0x01)

如果没有,它们之间有什么区别?

尝试在这里做的第一种方式是什么?

4 个答案:

答案 0 :(得分:13)

不,它没有。

if(bts[i] == 0x01)

表示bts [i]等于1。

if((bts[i] & 0x01) == 0x01) 

表示bts [i]的最低有效位是否等于1.

实施例

bts[i] = 9 //1001 in binary

if(bts[i] == 0x01) //false

if((bts[i] & 0x01) == 0x01) //true

答案 1 :(得分:2)

0x1001 & 0x01) == 0x01,但

0x1001 != 0x01

答案 2 :(得分:2)

不,它没有,第一个只会检查最后一位 - 如果它是1,它将返回true而不管其他位置。

如果只有最后一位是1,则第二个将返回true。

答案 3 :(得分:1)

不,这不是一回事。 0x01只是1。现在,

if (bts[i] == 0x01)

检查bts[i]是否等于1

if ((bts[i] & 0x01) == 0x01)

检查bts[i]的最后一个(最低有效)位是否等于1。在二进制系统中,所有奇数的最后一位都等于1。因此,如果if ((bts[i] & 0x01) == 0x01)中的数字是奇数,bts[i]基本上是在检查。它也可以写成if (bts[i] % 2 == 1)