C# 中如何检查无符号长整形数是否为2的正整次方
如何检查无符号长整形数是否为2的正整次方?
刚接触这个命题的时候,简单地想了想——很简单:
第一个方案:除2法。将它一直除以2,最后得到1则标识这个数是2的正整次方,得到一个小于1的小数则不是。
后来一想,这样的算法效率肯定不敢恭维,于是就有了第一个改进版:除2法的基础上进行奇偶判定。
但后来继续挖掘信息,又一次改进了方法:进行二进制位比较,效率得到了大幅的提高。
刚接触这个命题的时候,简单地想了想——很简单:
第一个方案:除2法。将它一直除以2,最后得到1则标识这个数是2的正整次方,得到一个小于1的小数则不是。
后来一想,这样的算法效率肯定不敢恭维,于是就有了第一个改进版:除2法的基础上进行奇偶判定。
但后来继续挖掘信息,又一次改进了方法:进行二进制位比较,效率得到了大幅的提高。