判断一个数字是不是2的整数次方

来源:互联网 发布:淘宝付费推广方式 编辑:程序博客网 时间:2024/05/29 14:30

 题目描述:用一条语句判断一个整数是不是2的整数次方。

 题目分析:2的整数次方的特点就是二进制中有一个1,思路就是这个数与比它小一个数相与,如果为0,则证明为真,特例有:1和负数需要处理。

代码如下:

#include<iostream>using namespace std;//判断一个数是不是2的整数次数bool IsTwo(int num){if(num == 1) //处理1{return false;}if(num < 0) //处理负数{num = abs(num);}int n = num & (num-1);if(n){return false;}return true;}int main(){cout<<IsTwo(1)<<endl;cout<<IsTwo(2)<<endl;cout<<IsTwo(3)<<endl;cout<<IsTwo(6)<<endl;cout<<IsTwo(8)<<endl;cout<<IsTwo(-4)<<endl;return 0;}