理解位运算及其用法

位运算及其用法

1、 异或 ^

参与运算的两个位,如果两个位相同结果为0,不同为1

0^0 = 0;
1^1 = 0;
1^0 = 1;

三个特点:

1、0 异或任意数还是任意数
2、1异或任意数等于任意数取反
3、任意数与自己异或相当于置零操作

性质

1、交换律
2、结合律 (a^b) ^c = a ^(b ^c)
3、对于任何数x,都有 x ^ x=0,x ^ 0=x
4、自反性: a^ b^ b=a^0=a;

用途:

1、用于不使用临时变量交换两个数(注意一点如果两个数相同就不能进行交换)例如交换a、b的值
a = a^b;
b = a^b;
a = a^b;
2、某些特定位进行反转:

例如对11100010的1、2位进行反转

 11100010
^00000011
 11100001
3、判断两个值是否相等
bool issam = a^b == 0;

2、与运算 &

两位同时为1,结果才为1,否则结果为0。

1^1 = 1
1^0 = 0
0^0 = 0

用途

与运算的用途:

1、清零

如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。

 1010101
&0000000
 0000000
2、二进制数某一位清零

假设11101第三位置零

11101
1、首先1左移三位变成01000
2、取反10111
3、相与
 11101
&10111
 10101
3、取一个数的指定位

比如取数 1010 1110 的低4位

1、首先另外找一个数字第四位是1,其余位为0000011112、相与
 1010 1110
&0000 1111
 0000 1110
4、取二进制数最右边的1

例如取1001 0100 最右边的1

1、首先取反  0110 1011
2、加一      0100 1100
3、相与
 1001 0100
&0100 1100
 0000 0100
5、判断奇偶

只要根据最未位是0还是1来决定,为0就是偶数,为1就是奇数。因此可以用:

a&1==0 来判断

3、或运算 |

参加运算的两个对象只要有一个为1,其值为1。

0|0=0 
0|1=1 
1|0=1  
1|1=1

用途:

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

例如1010 1110 的低4位设置为1

1、设置一个数字第四位为1其余位为0
 0000 1111
|1010 1110
 1010 1111 

2、二进制的某一位置为1

例如1000 0101 第三位置为1

1、首先1左移三位0000 1000
20000 1000
  | 1000 0101
    1000 1101
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值