移位运算符
- 左移:右边补0
- 右移
- 若为无符号数或非负数,则左边补0
- 若为负数,C语言无统一规定,有的补1,有的补0,得看实现机制
- 为了代码可移植性,不要对带符号数进行移位运算
位运算的算法举例
// 判断是否为奇数
bool isOdd(int n)
{
return n & 0x1
}
// 判断一个整数是否为2的幂
bool isPowerOf2(unsigned int n)
{
unsigned int i = 1;
while(i < n)
{
// i的值乘以2
i <<= 1;
}
return i == n;
}
// 方法2,2的幂的特点提二进制表示只有1个1
bool isPowerOf2(unsigned int n)
{
return (n & (n-1) == 0)
}