231 判断一个数是不是2的幂次方 点击此处返回总目录 342 判断一个数是不是4的幂次方 326 判断一个数是不是3的幂次方
一、判断一个数是不是2的幂次方 【题目】
【方法一】 每次除2看看能不能整除。
【代码】
【结果】
【方法二】 1 2 4 8 16 32... 转化为2进制为: 1 10 100 1000 10000 ... 即只有一个1。 这样就可以有很多种方法来做了。前面在二进制那里讲了三种统计1的个数的方法,都可以用。比如:
可以使用下面的操作,把n的最后一个1消掉,然后判断是不是0。
n & (n-1) //会消掉n的最后一个1。
1010 & 1001 ---------- 1000
【代码】
【结果】
二、判断一个数是不是4的幂次方
【题目】
【方法一】 跟上一个题目一样。每次除4看看余数是否为0。
代码:
结果:
【方法二】 使用位运算。 我们发现1 4 16 64,对应的二进制是: 1 100 10000 1000000 规律就是,只有一个1,即:(num & (num-1)) ==0 另外1后面要跟偶数个0。即1要出现在1,3,5,7,9...这些位置上。
代码:
结果:
三、判断一个数是不是3的幂次方
【题目】 【代码】
【结果】
这个题就没有什么二进制的规律了。只能老老实实做了。
|