1
如何判断一个数是否为奇数?
//常规方法
bool isOdd_Method1(int n)
{
if (n % 2)
return true;
else
return false;
}
//高效方法
bool isOdd_Method2(int n)
{
//奇数的二进制形式最后一位一定是1
return n & 0x1;
}
注:二进制除了最后一位其他均是2的倍数,故如为奇数,则二进制形式的最后一位一定为1.
2
如何判断一个整数是否为2的幂?
bool isPowerof2_Method1(unsigned n)
{
unsigned i = 1;
//i = 1,2,4,8,...
while (i < n)
{
i <<= 1;
}
//i >= n
return i == n;
}
bool isPowerof2_Method2(unsigned n)
{
//2的整数幂的二进制形式,只有一位为1,其余均为0
//此方法n不可以取0
return (n * n - 1) == 0;
}
示例:
3
给定一个不为0的整数,找出last set bit.
例:
输入 0011 0100
输出 4
int lastSetBit(int n)
{
return n & -n;
}
标签:积累,面试题,01,return,奇数,int,unsigned,二进制,bool
From: https://www.cnblogs.com/MyXjil/p/17080916.html