位运算符和运算符优先级

Posted eliwen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了位运算符和运算符优先级相关的知识,希望对你有一定的参考价值。

# ###(7)位运算符:    & | ~ ^ << >>
var1 = 19
var2 = 15
# & 按位与
res = var1 & var2
print(res)
‘‘‘
10011
01111
00011
‘‘‘
# | 按位或
res = var1 | var2
print(res)
‘‘‘
10011
01111
11111
‘‘‘


# << 左移
""" n<<m  n乘以2的m次幂  """
res = 5 << 2  # 相当于5 * 2的2次幂
"""
00000101
00010100
4+16 = 20
"""

# >> 右移
‘‘‘n>>m n除以2的m次幂‘‘‘
res = 5 >> 1
"""
00000101
00000010
"""
print(res)

# ^ 按位异或
"""两个值[不相同]方为真,两个值[相同]方为假"""
res = var1 ^ var2
‘‘‘
10011
01111
11100 
‘‘‘
print(res)
# ~ 按位非    - ( n+1 )
res = ~19
res = ~-21
print(res)


# 运算符的优先级
‘‘‘
一元运算符: 同一时间只操作一个数字运算的 ( ~ - ) ~19
二元运算符: 同一时间只操作两个数字运算的 (+ - * /) 5 + 3

整体一元运算符优先级 > 二元运算符
所有运算符当中 ** 幂运算优先级最高
所有运算符当中 = 赋值运算符优先级最低

单独的一种运算符优先级顺序如下:
乘 除 > 加 减
() > not > and > or
~ > (<< >>)> & > ^ > |

除此之外,剩下的运算符优先级如下:
算数运算符 > 位运算符 > 比较运算符 > 身份运算符 > 成员运算符 > 逻辑运算符
赋值运算符 单独拿出来作为最后,把值计算好之后再进行赋值
‘‘‘
res = 5+5 << 6 // 3 is 40 and True
print(res) # True
‘‘‘
5+5 << 2 is 40 and True
10 << 2 is 40 and True
40 is 40 and True
True and True => True 
‘‘‘
# 用一个小括号抱起来 作为一个整体,让别人能够看懂代码
res = (5+5) << (6 // 3) is 40 and True
print(res)

 

以上是关于位运算符和运算符优先级的主要内容,如果未能解决你的问题,请参考以下文章

Task01:变量运算符数据类型及位运算

Verilog 位拼接运算符的优先级问题

位运算,这道题怎么算啊

运算符和选择结构

python学习--运算符详解

Python运算符优先级