python位运算 Opération bit à bit : &、|、^、~、>>、<<

python位运算

1, 概念

在这里插入图片描述

2, 用途

2.1,判断奇偶

a&10 相当于a%20

1&1,1&3,1&2,1&4
# output : (1, 1, 0, 0)

2.2清零

0&1,0&3,0&2,0&4
# output (0, 0, 0, 0)

2.3 取指定位

ex: 取x=1010 0110得低3位,则需要找一个数n=0000 0111, 令n的低3位为1,其余为0,则x&y=1010 0110

n=int('00000111',2)
x=int('10100110',2)
x&n,bin(x&n)
# output (6, '0b110')

2.4 将特定位置设定为1

ex: 将x=1010 0110的低4位全部设为1,只需要另一个数n=0000 1111的低4位为1,其余为0,用符号’|'即可得到

n=int('00001111',2)
x=int('10100110',2)
bin(x|n)
# output = '0b10101111'

2.5 ‘^’的规律:

  1. 交换律: x^ y=y^x
    2, 结合律: (x^ y)^c=x ^(y ^ c)
    3, 对于任何数x,都有 x^ x=0,x^0=x
    4, 自反性: a^ b ^ b=a^0=a;

2.6 x与0异或值不变, 与自己异或为0

x^ x=0,x^0=x

2.7 翻转指定位

ex: X=1010 1110 的低4位进行翻转,只需要另找一个数Y=0000 1111,,然后将X与Y进行异或运算(X^Y=1010 0001)即可得到。

n=int('00001111',2)
x=int('10100110',2)
bin(x^n)
# output : '0b1010 1001'

2.8 x>>i = x / (2^ i); x<<i =x*(2^i)

32<<3 # 256

3, 补充bin()和int(str/int,base)

bin() 把一个数转换成二进制,以0b开头
oct()把一个数转换成八进制,以0o开头
hex()把一个数转换成16进制,以0x开头

int()默认base=10,如果指定base,则第一个数是str,如果不指定base,则第一个数是int

int('1111',2) # 15 若 x 为 str,则 base 可略可有
int(8) # 8
# int(8,10)#若 x 为纯数字,则不能有 base 参数,否则报错
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值