java中带运算符“的按位和”&&引用;
我只是读了下面的代码:java中带运算符“的按位和”&&引用;,java,bitwise-operators,bitwise-and,Java,Bitwise Operators,Bitwise And,我只是读了下面的代码: byte[] bts = {8, 0, 0, 0}; if ((bts[i] & 0x01) == 0x01) 这和你做的一样吗 if (bts[i] == 0x01) 如果没有,它们之间有什么区别 第一种方法是什么?(0x1001&0x01)==0x01,但是 0x1001 != 0x01 不,它不会,第一个将只检查最后一位-如果它是1,则不管其他位如何,它都将返回true 如果只有最后一位是1否,则第二位将返回true if(bts[i] == 0x01
byte[] bts = {8, 0, 0, 0};
if ((bts[i] & 0x01) == 0x01)
这和你做的一样吗
if (bts[i] == 0x01)
如果没有,它们之间有什么区别
第一种方法是什么?(0x1001&0x01)==0x01
,但是
0x1001 != 0x01
不,它不会,第一个将只检查最后一位-如果它是
1
,则不管其他位如何,它都将返回true
如果只有最后一位是1
否,则第二位将返回true
if(bts[i] == 0x01)
if ((bts[i] & 0x01) == 0x01)
表示如果bts[i]等于1
if((bts[i] & 0x01) == 0x01)
表示bts[i]的最低有效位是否等于1
if((bts[i] & 0x01) == 0x01)
例如
bts[i] = 9 //1001 in binary
if(bts[i] == 0x01) //false
if((bts[i] & 0x01) == 0x01) //true
不,这不是一回事
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]
中的数字是奇数。如果(bts[i]%2==1),它也可以写成。@Johnny:例如,所有奇数都匹配&0x01
测试,但只有0x01
匹配==0x01
测试。似乎所有奇数在这里都会返回true。@johnychen:我听到回声了吗?;-)