我正在审核一些PHP代码并偶然发现:
if(($this->int & 0b111111111) === 0){ //blah
我对0b111111111
的来源感到非常困惑。这是什么以及它是如何产生的?我var_dumped
它结果是511,但是为什么用这个而不是数字511?它来自哪里?
答案 0 :(得分:2)
它是一个使用binary notation的整数,并且以十进制表示法等于511。
编码器正在使用它作为二进制AND(&)的掩码。
仅当$this->int == 0
时,测试等于0,因为二进制AND运算符比较二进制值的每个位,并且在相应位置返回1,其中左右数字在该位置都有1。 / p>
我对此处的使用没有特别的想法:根据上下文,它可能是为了一致性。或者它只是写作的“聪明代码”
if($this->int === 0){ // Dumber blah