过去判断奇数偶数的编程习惯一直是除以2取余。
更快的判断方法,就是和1位与。
因为奇数的二进制表示法的最低位是1,偶数的最低位是0。那么用这个数去和1按位与,如果是奇数,那么结果就是1;偶数结果则是0。
如果只是少量判断的话,‘除2取余’和‘1位与’两种方式并没有什么差别,只有在判断次数极多才能明显感觉到速度上的差别;但是相对于‘1位与’来说,‘除2取余’更好理解,可读性更好一些。
所以一般情况下还是尽量少用‘1位与’方式。‘1位与’可以作为一种新的思考问题的思路研究一下
<?php
$i = 1; $j = 2;
echo $i%2 == 1;
echo $j%2 == 0;
echo ($i & 1) == 1;
echo ($j & 1) == 0;
从这个我们也可以在判断真假与或时,利用按位与或者按位或。
<?php
$a = true;
$b = false;
$c = $a & $b;
$d = $a | $b;
var_dump($c);// 0
var_dump($d);// 1
值得注意的是,只有当明确知道 a 和 a和 a和b是bool类型时,才可以使用按位与或者按位或来判断最后真假。
举个例子:比如$a = 2 (010); $b = 5 (101); 这样按位与的结果就是0。因此这种情况就按照 && || 来判断~