我刚刚阅读了以下代码:
byte[] bts = {8, 0, 0, 0};
if ((bts[i] & 0x01) == 0x01)
这是否与
if (bts[i] == 0x01)
如果不是,它们之间有什么区别?
在这里尝试做的第一种方法是什么?
我刚刚阅读了以下代码:
byte[] bts = {8, 0, 0, 0};
if ((bts[i] & 0x01) == 0x01)
这是否与
if (bts[i] == 0x01)
如果不是,它们之间有什么区别?
在这里尝试做的第一种方法是什么?
不,它没有。
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
,它将返回 true 而不管其他的。
如果只有最后一位是 ,则第二个将返回 true 1
。
( 0x1001 & 0x01) == 0x01
, 但是
0x1001 != 0x01
不,这不是一回事。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)
。