gpt4 book ai didi

java - 按位 AND 运算符 (&) 没有像我预期的那样工作

转载 作者:行者123 更新时间:2023-11-30 00:56:46 24 4
gpt4 key购买 nike

我把 10 的特征属性带入了 int 变量 charaProp。

final int charaProp = characteristic.getProperties();

然后我将过滤属性 2(BluetoothGattCharacteristic.PROPERTY_READ) 带入了 int 变量属性。

final int property = BluetoothGattCharacteristic.PROPERTY_READ;

我对 charaProp 和属性进行了按位与运算,以查看要执行的是读还是写。

final int tmp = charaProp & property;

太奇怪了,本应为0的AND运算符结果为2。 Screen shot

然后流程开始执行读取操作。

 if ((charaProp & BluetoothGattCharacteristic.PROPERTY_READ) > 0) {
mBluetoothLeService.readCharacteristic(characteristic);
}

我真的不知道为什么会这样?

请帮帮我。提前致谢!!!

最佳答案

这没什么奇怪的:

     DEC  BIN
a 10: 1010
b 2: 0010
a&b 2: 0010

按位运算符& 获取两个数字的二进制表示并对这些位执行位与

a&b 在以下情况下将产生 0:

  • a==0 || b == 0
  • a、b 各不相同,但其中一个设置了位。

提示:
我有一个非常重要的提示给你。不要假设 Java 没有以它应该的方式工作。这可能是您的代码逻辑中的问题。您的标题应该是:Java 运算符并没有像我预期的那样工作。最后,Java 总是按照规范工作。问题总是出在逻辑上。有时是显而易见的,有时是关于计算机(和 JVM)如何工作的逻辑和知识。

关于java - 按位 AND 运算符 (&) 没有像我预期的那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40012476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com