嵌入式技术
在上一篇文章中,我们介绍了&
运算符的基础用法,本篇文章,我们将介绍&
运算符的一些高级用法。
#include < stdio.h >
int main()
{
unsigned int x = 0xABCD1234; //0b10101011110011010001001000110100
x &= ~(1U < < 31);
printf("x = %un",x);
return 0;
}
1U << 31
表示将一个无符号整数的最高位设置为 1
~(1U << 31)
取反得到掩码,再和原数进行按位与运算,就可以将最高位清零二进制末尾位 | |
---|---|
奇数 | 1 |
偶数 | 0 |
#include < stdio.h >
int main()
{
int x = 7;
if (x & 1)
{
printf("%d 是奇数n", x);
}
else
{
printf("%d 是偶数n", x);
}
return 0;
}
x & (x - 1)
的结果一定为 0#include < stdio.h >
int main()
{
unsigned int x = 16;
if (!(x & (x - 1)))
{
printf("%u 是 2 的幂次方n", x);
}
else
{
printf("%u 不是 2 的幂次方n", x);
}
return 0;
}
通过这篇文章,我们学会了用位运算符&来做位掩码操作、判断奇偶性、判断一个数是否为2的幂次方。
在下一篇文章中,我们将介绍位运算符|
的几个高级用法。
全部0条评论
快来发表一下你的评论吧 !