Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中带运算符“的按位和”&&引用;_Java_Bitwise Operators_Bitwise And - Fatal编程技术网

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:我听到回声了吗?;-)