今天网上看到2个这样的算法,感觉很简洁,效率也很高,就收藏了,但有些原理还不是很理解
方法1:
int fun(int v)
{
float f = (float)(v - 1);
return 1 << ((*(unsigned int*)(&f) >> 23) - 126);
}
方法2:
inline int fun(int x)
{
x |= (x >> 1);
x |= (x >> 2);
x |= (x >> 4);
x |= (x >> 8);
x |= (x >> 16);
return x+1;
}
本文介绍了两种针对整数操作的高效算法实现:一种用于快速计算2的幂次方,另一种用于将整数转换为其最高位全1的下一个整数。这两种方法利用位操作实现了简洁高效的解决方案。
749

被折叠的 条评论
为什么被折叠?



