unsigned long ccNextPOT(unsigned long x){
x = x - 1;
x = x | (x >> 1);
x = x | (x >> 2);
x = x | (x >> 4);
x = x | (x >> 8);
x = x | (x >>16);
return x + 1;
}
1
A
回答
2
OR和SHIFT语句在最高有效位(最多32位)的右侧填充了x
的所有位。连同前递减和递增后的语句,这个函数计算(作为函数名称suggets)下一个幂次数,等于或大于给定数字(如果x
大于0且小于2^32 )
+0
预递减确保两个零的输入和两个幂的映射到它们自己。 – njuffa 2011-12-26 17:41:20
0
此功能x舍高达2下一个最高权力这正是代码中here
unsigned int v; // compute the next highest power of 2 of 32-bit v
v--;
v |= v >> 1;
v |= v >> 2;
v |= v >> 4;
v |= v >> 8;
v |= v >> 16;
v++;
相关问题
- 1. 位置getAccuracy()这个函数做什么?
- 2. 这个函数做什么?
- 3. 这个函数做什么?
- 4. 这个位移操作正在做什么?
- 5. 这个LSB函数做了什么?
- 6. 这个callback()函数做了什么?
- 7. 这个C函数在做什么?
- 8. 这个函数在做什么?
- 9. 这个替换函数做什么?
- 10. R - 这个tapply()函数做了什么?
- 11. 这个lambda函数做什么?
- 12. 这个高阶函数做什么?
- 13. 这个ruby函数做了什么?
- 14. $ rootScope在这个函数中做什么?
- 15. 这个构造函数在做什么?
- 16. 这个JavaScript响应函数做什么?
- 17. 这个回调函数做什么?
- 18. 这个C++函数做了什么?
- 19. 这个递归函数做什么?
- 20. 这个get_text函数做了什么?
- 21. 这个函数(convert_to_command)做什么?
- 22. 这个函数做什么videooptflowlines()matlab?
- 23. 这个Ruby函数在做什么?
- 24. 这个函数做了什么细节?
- 25. str_to_a32 - 这个函数做什么?
- 26. 这个anonymmous split函数做什么?
- 27. 这些操作员在做什么C
- 28. 这个函数做什么?与钳位值有关?
- 29. 这个Cosine 16位函数实际上在做什么?
- 30. 这位或者操作符在JavaScript中做了些什么?
它的工作原理相当快。 – 2011-12-26 15:46:23
我知道它运作良好,但我想知道它使用哪种算法。 – guoxx 2011-12-26 15:51:16
看看[这里](http://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2)。 – Howard 2011-12-26 15:51:39