我刚刚阅读了以下代码:
byte[] bts = {8, 0, 0, 0};
if ((bts[i] & 0x01) == 0x01)
这是否与
相同if (bts[i] == 0x01)
如果没有,它们之间有什么区别?
尝试在这里做的第一种方式是什么?
答案 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)
。