作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我把 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:
提示:
我有一个非常重要的提示给你。不要假设 Java 没有以它应该的方式工作。这可能是您的代码逻辑中的问题。您的标题应该是:Java 运算符并没有像我预期的那样工作。最后,Java 总是按照规范工作。问题总是出在逻辑上。有时是显而易见的,有时是关于计算机(和 JVM)如何工作的逻辑和知识。
关于java - 按位 AND 运算符 (&) 没有像我预期的那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40012476/
我是一名优秀的程序员,十分优秀!