【二进制操作】非常全

//1.二进制操作

操作(PS:不懂运算符,可以看最底下)

操作代码
去掉最后一位x >> 1
在最后加一个0x << 1
在最后加一个1x << 1 + 1
把最后一位变为1x | 1
把最后一位变为0(x | 1) - 1
最后一位取反x ^ 1
把右数第k位变成1x | (1 << (k - 1))
把右数第k位变成0x & ~(1 << (k - 1))
右数第k位取反x ^ (1 << (k - 1))
取末三位x & 7
取末k位x & (1 << k - 1)
取右数第k位x >> (k - 1) & 1
把末k位变成1x | (1 << k - 1)
把末k位变成0x & ~(1 << k - 1)
末k位取反x ^ (1 << k - 1)
把右边连续的1变成0x & (x + 1)
把右边第一个0变成1x | (x + 1)
把右边连续的0变成1x | (x - 1)
取右边连续的1(x ^ (x + 1)) >> 1

判断

判断代码
只包含一个1x & (x - 1) == 0

运算符 (PS:大家滴编程语言应该差不多)

  • & (与):都为1才是1
  • | (或):都为0才是0
  • ~ (非):是0则1,是1则0
  • ^:不相同为1,相同为0
  • <<:逻辑左移,算数左移
  • >>:算数右移
  • >>>:逻辑右移

逻辑和算数左移:高位溢出,低位补0

逻辑右移:低位溢出,高位补0

算数右移:低位溢出,高位用符号位的值(负数的符号位是1)补

例:
10 << 1 = 20
-10 >> 1 = -5
-10 >>> 1 = 2147483643

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值