位操作运算符及应用

位操作运算符:

位与(&),位或(|),取反(~),位异或(^),左移(<<),右移(>>)



按位与运算符“&”是双目运算符,其功能是参与运算的两个数字对应的二进制位相与。只有对应的两个二进制位均为1时,结果才为1,否则为0.参与运算的数以补码方式出现。

例如,9&5可写算式如下:

0000 1001(9的二进制补码)&  0000 0101 (5的二进制补码)

0000 0001 (1的二进制补码)

0000 1001

0000 0101

0000 0001 = 1

按位与运算通常用来对某些位清0或保留某些位。例如,把a的高8位清0,保留低8位,可做a&255 运算(255 的二进制数为0000 0000 1111 1111).

应用:

(1)清0特定位(mask中特定位置0,其他位为1,s = s&mask)。

(2)取某数中指定位(mask中特定位置1,其他位为0,s = s&mask).




安慰或运算符“|”是双目运算符。其功能是参与运算的两个数字对应的二进制位相或。只要对应的两个二进制位有一个为1时,结果位就为1.参与运算的两个数均以 补码出现。

例如:9|5可写算式如下:

0000 1001 |  0000 0101

0000 1101  = 13

应用:常用来将源操作数某些位置1,其他位不变(mask中特定位置1,其他位为0, s = s&mask).




按位异或运算符“^”.其功能是参与运算的两个数字对应的二进制位相异或。当对应的二进位相异时,结果为1.参与运算数仍以补码出现。

例如:9^5可写算式如下:

0000 1001 ^  0000 0101

0000 1100 = 12


应用:

(1)使特定位的值取反(mask中特定位置1,其他位为0,s = s^mask)

(2)不引入第三变量交换两个数的值(设 a = a1,b = b1)

目标                                         操作                                     操作后状态

a = a1^b1                                  a =a^b                                   a = a1^b1,b = b1

b = a1^b1^b1                            b =a^b                                   a =a1^b1,b = a1

a = b1^a1^a1                            a =a^b                                   a= b1,b =a1




左移(<<)和右移( >> )的区别:

左移是拿0来补位,右移是拿符号位来补位,所以位操作一定是操作无符号数。



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值