变量值列在下面
$v['flag'] = 10
kPOSTAGE_HOME = 8
那么下面这行怎么办?!
if(($v['flag']&kPOSTAGE_HOME)==kPOSTAGE_HOME) {
//do something
}
答案 0 :(得分:7)
&安培;设置两个值上设置的位。一些二进制数学:
00001010 | 10
& 00001000 | 8
---------------
= 00001000 | 8
所以10&8
返回8,而8 == 8。原因是检查该位掩码中的标志是否已设置...
答案 1 :(得分:4)
它检查$v['flag']
中的位模式是否设置了第3位。
答案 2 :(得分:2)
而且,为了更好的可读性,它可以简化为以下内容:
if ( $v['flag'] & kPOSTAGE_HOME ) {
答案 3 :(得分:1)
它掩盖了变量中的'8'位。基数10中的数字'10'=二进制的= 1001,8 == 1000.这意味着“1001是否设置了1000”位?“答案是'是'。
答案 4 :(得分:0)
它会在$v['flag']
中的第三位开启时进行检查。
&
是“按位和”运算符,二进制8是"00000100"
,因此你将“按位”和“除第三个之外的所有位”将为零,所以如果第三位打开它将仍然存在,因此你需要进一步检查是否平等。