Joe*_*oel 6 c bitwise-operators
我被告知,(i >> 3) is faster than (i/8)但我找不到任何有关什么的信息>>.任何人都可以给我一个解释它的链接吗?
(i >> 3) is faster than (i/8)
>>
同一个人告诉我" int k = i/8,其次k*8是更好的完成(i&0xfffffff8);"但谷歌再也没有帮助...
int k = i/8
k*8
(i&0xfffffff8);
感谢您的任何链接!
Chr*_*ica 9
正如解释这里的>>操作是简单的位按位转移i.因此i向右移位1位导致整数除以2并且移位3位导致除以2 ^ 3 = 8.
i
但是现在这种以2的幂除法的优化不应该再真正完成了,因为编译器应该足够智能自己做到这一点.
类似地,与0xFFFFFFF8(1 ... 1000,最后3位0)的按位AND 等于向下舍入i到最接近的8的倍数(如同(i/8)*8),因为它将使最后3位为零i.
0xFFFFFFF8
(i/8)*8
归档时间:
14 年 前
查看次数:
2782 次
最近记录: