求一个32bit的二进制数中1的个数

来源:互联网 发布:雷霆世纪 知乎 编辑:程序博客网 时间:2024/06/03 22:40

这个游戏还是很有意思的。。。

 

解法一:原理,短除法进制转换

 

解法二:位运算,取出最后一位的值相加

 

解法三:如果你有时间去初始化表,你可以初始化一个232的表

 

解法四:这个方法比较特殊,来说下原理吧。例如x是2的整数次幂x = 0100 0000,一个简单的方法return(!(x&(x-1))),就能判断出是否含有1,那么假设x = sum(an*2n) n = 0,1,2...则一样可以用上述原则判断相应的an是否为1

 

 

接下来就是该分析哪个速度快,哪个速度慢了。当然对于不同的取值速度是不一样的,那随机取值分析吧。

 

原创粉丝点击