我有这个代码:
if((bob.prop & 0x100) == 0x100) {
// some code
}
我发现这部分:
bob.prop & 0x100
表示
is bob.prop set to 0x100?
所以,我认为它给了我对或错。但是这段代码的结果也与 0x100 进行了比较:
if((bob.prop & 0x100) == 0x100) {
这是什么?什么意思?
0x100
在二进制中是 0000000100000000
,第 9 位已设置。
执行 bob.prop & 0x100
从 bob.prop
中过滤掉第 9 位。例如:
bob.prop & 0x100
1010110101110010 & 0000000100000000 gives 0000000100000000
0110110001101011 & 0000000100000000 gives 0000000000000000
之所以这样做,是因为它是两个操作数的按位与。这意味着结果将只有在两个操作数中都设置了位的位被设置。
然后您要检查结果是否等于 0000000100000000
,这等同于询问“是否设置了第 9 位?”
没有必要执行最后的比较,因为任何大于 0 的整数值都将转换为 true
,而 0 将转换为 false
。你可以只写:
if(bob.prop & 0x100)
我是一名优秀的程序员,十分优秀!