python 位运算与等号_位运算符 & | ~ ^ << >>

# ### 位运算符 & | ~ ^ << >>

var1 = 19

var2 = 15

# & 按位与

"""

res = var1 & var2

print(res)

"""

'''

000...10011

000...01111

000...00011

'''

# | 按位或

res = var1 | var2

'''

000...10011

000...01111

000...11111

'''

print(res)

# ^ 按位异或

res = var1 ^ var2

'''

000...10011

000...01111

000...11100

'''

print(res)

# << 左移 (左移 相当于乘以2的几次幂 n << m 相当于n乘2的m次幂)

res = 5 << 1

res = 5 << 3

print(res)

'''

000...101

000..1010

'''

# >> 右移 (右移 相当于除以2的几次幂 n >> m 相当于n除2的m次幂)

res = 5 >> 1 # 5 // 2的1次幂 => 2

res = 5 >> 2 # 5 // 2的2次幂 => 1

res = 5 >> 3 # 5 // 2的3次幂 => 0

print(res)

'''

000...101

000....10 =>2

000....01 =>1

'''

# ~ 按位非 (按位非 操作的二进制的补码, 对二进制的每一位进行取反,包括符号位) 公式:-(n+1)

res = ~19

print(res)

'''

000...10011 (补码)

111...01100 (按位非)

# 给补码求原码

111...01100

100...10011 (反码)

100...10100 (原码 = 反码+1)

十进制 => -20

'''

res= ~(-19)

print(res)

'''

1000...10011 (原码)

1111...01100 (反码)

1111...01101 (补码)

# 现在进行按位非

0000...10010

因为高位都是0是正数

原码 = 反码 = 补码

0000...10010 (原码)

'''

"""

运算符的优先级:

() 括号优先级最高

** 优先级其次

= 优先级最低

一元运算符:同一时间只操作一个数字的 (- , ~)

二元运算符:同一时间能操作二个数字的 (+ , -...)

~19+5

一般来说,一元运算符 大于 二元运算符的优先级

+ - * / => * / 大于 + -

() not and or => not > and > or

如果都是二元运算符:

算术运算符 > 位运算符 > 比较运算符 > 身份运算符 > 成员运算符 > 逻辑运算符

赋值运算符 作为最后等号右边的值算好后进行赋值.

"""

res = 5+5 << 6 // 3 is 40 and True

print(res)

'''

5+5 << 2 is 40 and True

10 << 2 is 40 and True

40 is 40 and True

True and True

True

'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值