位运算

 学习状态压缩 必须要先搞懂位运算  这是集中位运算的符号与其作用。

名称
C/C++样式 Pascal样式 简记法则
按位与 & and 全一则一,否则为零
按位或 | or 有一则一,否则为零
按位取反 ~ not 是零则一,是一则零
按位异或 ^ xor 不同则一,相同则零
左移位 << shl a<<k等价于a*2k
右移位 >> shr a>>k等价于a/2k
优先级: not>and>xor>or;
 
 
位运算的应用:
(1) 获取一个或多个固定为的值
   假设x = 1010(10进制的10)
   我们要获取从右边第二位的值,那么我们可以这样来获取
   x&(1<<1)也就是
   x:       1010
   1<<1:         0010
   x&(1<<1):  0010
   这样我们就可以通过判断x&(1<<1)是否等于0来知道这一位是0还是1了。
   
   x&(1<<n)  就是获取第n-1位的值。 
   
(2) 把一个或多个固定为的值置为零
   假设x = 1010(10进制的10)
   我们要把从右边第二位的值置为零,那么我们可以这样来做
   x&(~(1<<1))也就是
   x            1010
   ~(1<<1)           1101
   x&(~(1<<1)) 1000
   x&(~(1<<n))  就是把x的第n-1位变成0

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值