位运算
位运算操作符有~、^、&、|这几种
1.~
这个表示按位取反,比如8的二进制为1000.
~8就变成了0111,即二进制的0变1,1变0。
2.^
这个符号表示按位异或,比如1^0=1,0^1=1,但是1^1=0^0=0;
然后可以通过异或运算符达到值交换的效果。
比如说要交换a和b的值,只需要
a=a^b; b=a^b; a=a^b;
然后就可以达到将ab值交换的目的。
3.&
该符号表示按位与,将ab相同的变1,不相同就为0,但是0和0还是为0;
通过&操作符我们可以达到快速判断一个数是否是2的n次方。
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int n; 6 while(cin>>n) 7 { 8 cout<<(n&(n-1))<<endl; 9 } 10 return 0; 11 }
4.|
这个操作符就表示按位或,0|1=1|0=1|1=1,0|0=0;
5.>>
该操作符表示将一个数的二进制右移多少位,
比如说4>>1=2,
8>>3=1;
6.<<
这个操作符和刚才那个刚好相反,为左移操作符。
比如2<<1=4;
4<<2=16