位运算:按位运算

按位运算

  • C有这些按位运算的运算符
    • & 按位的与
    • | 按位的或
    • ~ 按位取反
    • ^ 按位的异或
    • << 左移
    • >> 右移

按位与 &

  • 如果(x)i ==1 并且 (y)i ==1,那么(x&y)i =1
  • 否则的话(x&y)i = 0
  • 按位与常用于两种应用:
    • 让某一位或某些位为0:x & 0xFE
    • 取一个数中的一段:x & 0xFE


按位或 |

  • 如果(x)i ==1 或 (y)i ==1,那么(x|y)i =1
  • 否则的话(x|y)i = 0
  • 按位或常用于两种应用:
    • 使得一位或几个位为1:x & 0x01
    • 把两个数拼起来: 0x00FF | 0xFF00

按位取反 ~

  • (~x)i = 1 - (x)i
  • 把1位变0,0位变1
  • 想得到全部位为1的数:~0
  • 7的二进制位是0111,x|7使得低3位为1,而
  • x & ~7,就使得低3位为0

这里写图片描述


逻辑运算VS按位运算

  • 对于逻辑运算,它只看到两个值:0 和 1
  • 可以认为逻辑运算相当于把所有的非0值都变成1,然后做按位运算
    • 5 & 4 ——>4 而 5 && 4 ——>1 & 1 ——>1
    • 5 | 4 ——>5 而 5 || 4 ——>1 | 1 ——>1
    • ~4 ——>3 而!4——>!1——>0
    • -

按位异或^

  • 如果(x)i == (y)i,那么(x^y)i = 0
  • 否则的话,(x^y)i = 1
  • 如果两个位相等,那么结果为0;不相等,结果为1
  • 如果x和y相等,那么x^y的结果为0
  • 对一个变量用同一个值异或两次,等于什么也没做
    • x^y^y ——>x
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值