python中的按位运算

常见的按位运算有:&、|、~、<<、>>

按位与运算&

print(-5 & 0xF)
print(5 & 0xF)
# 结果为
11
5

由上可知:python中进行按位与运算结果必然是正数,最高位是符号位的特质消失。主要是限定变量的位数(因为python中没有int、long来限制位数)

按位或运算 |

print(-5 | 0xF)
print(5 | 0xF)
# 其结果分别为
-1 
15

由上可知:python中按位或运算仍然保留最高位的符号位特质

按位异或运算 ^

print(-5 ^ 0xF)
print(5 ^ 0xF)
# 其结果为
-12
10

由上可知:python按位异或运算也保留最高位的符号位特质,-5(前八位位0b11110100),0xF(前八位0b00001111)按位异或运算得(0b11110100),然后转换成整数(最高位是符号位)变成-12

移位运算 << >>

print(-5 << 1)
print(-5 >> 1)
# 其结果是
-10
-3

由上可知:移位运算保留最高位是符号位的特质

注:按位与运算会掩盖最高位是符号位的特质,因此要想最高位仍然充当符号位,必须用剩余4个进行处理

可解决的问题--剑指offer 65

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值