5

我刚刚阅读了以下代码:

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

这是否与

if (bts[i] == 0x01)

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

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

4

4 回答 4

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
于 2013-07-31T10:56:29.360 回答
2

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

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

于 2013-07-31T10:56:10.927 回答
2

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

0x1001 != 0x01
于 2013-07-31T10:56:01.323 回答
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)

于 2013-07-31T11:00:47.760 回答