您的位置:首页 > 其它

位运算及技巧

2016-03-09 23:47 232 查看
1、位运算符优先级

1

~

2
<<、>>
移位
3
&

4
^
异或
5
|

6
&=、^=、|=、<<=、>>=
2、位运算巧妙应用
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)

{

a = a^b;

b = b^a;

a = a^b;

}

c、不用除法,实现a与b的平均值的求解

int average(int a, int b)

{

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次方,否则不是。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: