按位运算做奇偶数判断
奇偶数判断很简单,不知道的怕是傻子吧
求余法 %
我们只需要对2求余,如果余数为零就是偶数,为1就是奇数。很简单了吧。
function isOdd($num) {
return $num % 2;
}
当然求余之前我们还需要对输入的 $num 进行是否为整数的处理。
位运算法 &
位运算是对数的二进制进行的运算,利用按位且操作,就是 & ,来做奇偶数判断是这样的
function isOdd($num) {
return $num & 1;
}
奇数的二进制数的最后一位永远是1,与 1 按位且只会得到 1,偶数相反。
总结
两种方法都能达到目的,按位运算应该是有更高的性能的,具体我也没试。
这里提出来是想给记住多一种思路。或者说更好的思路。编程有趣的地方也在于此。
本作品采用《CC 协议》,转载必须注明作者和本文链接
假装会写PHP
测试结果:这点差距建议忽略不计,还是用
%
比较通俗易懂@wkan 很棒
@wkan
我将你的代码改成一下这样,得到的结果就差很挺多的了,我想不通为什么会有这样的差别,请指教
php 5.6
和php7.1
差很多哦@lol173 可能涉及到PHP的某种奇特优化了吧,我也不清楚(ノ_<)
@wkan 应该是吧,我的是 7.1
@wkan 的测试更合理一些。php的函数会编译生成zend_function,存放在函数表里,而调用函数会经过function_exist,function_call等,需要反复在表里查找对应函数,而isOdd1(),isOdd2(),处于表中的位置不同,查找速度也不相同,试下在代码上把isOdd1(),isOdd2()互换位置你就可以知道。当然php7取消了function_exist,并且增加了缓存,差距会减小,但还是可以看出函数位置不同导致的差距
@flusky 互换了下位置
结果如下,PHP 是 7.1