1、位运算符优先级
1 | ~ | 非 |
2 | <<、>> | 移位 |
3 | & | 与 |
4 | ^ | 异或 |
5 | | | 或 |
6 | &=、^=、|=、<<=、>>= |
|
a、给出任意十进制数,不用进行除法就可以获得其二进制数
a>>k&1能获取十进制数a的第k位二进制
int main()
{
int n = 0;
printf("请输入一个十进制数:");
scanf_s("%d",&n);
for(int i = 0; i <= 15; i++)
{
printf("%d",n>>(15-i)&1);
}
return 0;
} //16位二进制表示
b、不用中间变量,实现a与b的交换
void swap(int a , int b)
{
}
c、不用除法,实现a与b的平均值的求解
int average(int a, int b)
{
return (a&b)+((a^b)>>1);
}
{
return (a&b)+((a^b)>>1);
}
d、判断一个变量a是奇数还是偶数
a&1 = 0 z则为偶数
a&1 = 0 z则为奇数
e、判断数a是否是2的n次方
判断a&(a-1),如果结果为0,则是2的n次方,否则不是。