位运算2

^

异或的几条性质:

1、交换律
2、结合律 (ab)c == a(bc)
3、对于任何数x,都有 xx=0,x0=x
4、自反性: abb=a^0=a;
异或运算的用途:

比如将数 X=1010 1110 的低4位进行翻转,只需要另找一个数Y,令Y的低4位为1,其余位为0,即Y=0000 1111,然后将X与Y进行异或运算(X^Y=1010 0001)即可得到。

&

2)取一个数的指定位

比如取数 X=1010 1110 的低4位,只需要另找一个数Y,令Y的低4位为1,其余位为0,即Y=0000 1111,然后将X与Y进行按位与运算(X&Y=0000 1110)即可得到X的指定位。

3)判断奇偶

只要根据最未位是0还是1来决定,为0就是偶数,为1就是奇数。因此可以用if ((a & 1) == 0)代替if (a % 2 == 0)来判断a是不是偶数。

//取每一位数字实例
                int x;
		cin >> x;
		for(int i = 29; i >= 0; --i)
			pos[i] = (x >> i & 1);

|

常用来对一个数据的某些位设置为1

比如将数 X=1010 1110 的低4位设置为1,只需要另找一个数Y,令Y的低4位为1,其余位为0,即Y=0000 1111,然后将X与Y进行按位或运算(X|Y=1010 1111)即可得到。

优先级: ^ > & > |

posted @ 2023-01-31 21:30  MITE's_BKY  阅读(22)  评论(0)    收藏  举报