>>和0xfffffff8是什么意思?

Joe*_*oel 6 c bitwise-operators

我被告知,(i >> 3) is faster than (i/8)但我找不到任何有关什么的信息>>.任何人都可以给我一个解释它的链接吗?

同一个人告诉我" int k = i/8,其次k*8是更好的完成(i&0xfffffff8);"但谷歌再也没有帮助...

感谢您的任何链接!

Chr*_*ica 9

正如解释这里>>操作是简单的位按位转移i.因此i向右移位1位导致整数除以2并且移位3位导致除以2 ^ 3 = 8.

但是现在这种以2的幂除法的优化不应该再真正完成了,因为编译器应该足够智能自己做到这一点.

类似地,与0xFFFFFFF8(1 ... 1000,最后3位0)的按位AND 等于向下舍入i到最接近的8的倍数(如同(i/8)*8),因为它将使最后3位为零i.