给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。
示例 1:
输入: 16 输出: true
示例 2:
输入: 5 输出: false
进阶:
你能不使用循环或者递归来完成本题吗?
自己写的代码:
class Solution {
public:
bool isPowerOfFour(int num) {
if(num%4!=0&&num!=1)
return false;
else{
long long sum = 1;
for(int i=1;;i++){
if(sum==num)
return true;
if(sum>num)
return false;
sum*=4;
}
}
}
};
通过百度,看了下大佬的代码,原来这个题目,可以用位运算搞定。
学习的博客:
https://blog.csdn.net/morewindows/article/details/7354571 讲述了一下位运算。
https://blog.csdn.net/ddkxddkx/article/details/6858381
参考的代码:
https://blog.csdn.net/u010564321/article/details/51210749
https://blog.csdn.net/Hackbuteer1/article/details/6681216
二进制很重要~~~