位运算主要有,&,|,~,^等几种,这几种在编程方面能极大地优化程序,所以掌握他们势在必行,所以就总计一下。
&:
主要可以用来求某数的其中一个二进制位,常用的有求某个数转化为二进制后的最后一位。
可以用 a&(-a)进行快速求解
|:
可以将某个数转化为二进制后的某些位设为1,通过该数与想要相应位数为1其他位为零的数进行或运算即可
~:
可以间接转化某个数:如:求32位的最大值。可以用~0u=2^32-1;
^:
异或则可以用来不借助中间变量来实现两个数的交换,还可以将一个数的某些位取反
例如:交换a和b 可以用 a=a^b;b=b^a;a=a^b;(还有一种方法,就是a=a+b;b=a-b;a=a-b;也能实现不借助中间变量来实现两者的转化)。
原文:http://blog.csdn.net/ice_alone/article/details/38379297