如何仅使用位移和加法进行乘法和除法?
我正在寻找在php中进行整数除法的最快方法.例如,5/2应该是2和6/2应该是3,依此类推.如果我只是这样做,PHP将在第一种情况下返回2.5,我能找到的唯一解决方案是使用intval($my_number/2)- 这不是我想要的那么快(但给出了预期的结果).
任何人都可以帮我解决这个问题吗?
编辑:
感谢大家的想法,我使用rubber_boots的脚本postet测试其中一些10000000迭代,在这里你可以看到结果(3或4岁的macbook与2Ghz intel core 2 duo上的MAMP) :
start (10000000)
(int)...: 2.26 sec
floor(): 4.36 sec
int_divide(): 2.86 sec
bit-shift: 1.45 sec //note: only works for divisions through powers of 2
intval(): 4.51 sec
round() with PHP_ROUND_HALF_DOWN: 5.48 sec
Run Code Online (Sandbox Code Playgroud)
直到现在,位移是最快的方式,但是我会把这个问题留一天,看看是否有其他可能性...
EDIT2:
更新了结果,用PHP_ROUND_HALF_DOWN添加了round()(感谢Col._Shrapnel)