如何判断一个数是不是奇数?
方法1:数据除以2取余数,为1是奇数,为0是偶数
int JudgeData(int data)
{
return data%2; // 奇数返回1,偶数返回0
}
方法2:与数据1按位与,为1是奇数,为0是偶数(位操作数据计算快,占用资源少)
int JudgeData(int data)
{
return data&1; // 奇数返回1,偶数返回0
}
如何判断一个无符号32位整数是不是2的整数次幂?
分析:2的整数次幂数字的特点是,二进制形式只有1个1,比如:2: 10 4: 100 8: 1000 16: 10000…
因此,只需要看二进制形式下1的个数即可。
方法1:
答:判断最低位是否是1,然后右移1位,再次判断最低位是否是1,是1计数,是0不计数。
循还共判断32次,1的个数是1代表是2的整数次幂,否则不是。
方法2:
计算这个数 按位与 这个数减一,为0代表是,为1代表不是。
分析:
2: 10&01 = 0
4: 100&011 = 0
8: 1000&0111 = 0
16: 10000&01111 = 0
…
结果均为0,如果不是的话, 比如 3 ,11&10 = 10 不为0.