运算符
(一) 算数运算符
#分类 : + , - , * , / , // , % , **
# 注意点:
(1) / , 除法,得到一个小数:7 / 3 = 2.3333333333333335
(2)// , 取整,舍去小数:7 / 3 = 2
(3) % , 取余,得到余数:
-7 % 3 = 2
7 %-3 = -2
-7 %-3 = -1
(4)**,幂运算,进行幂运算:7 ** 3 = 343
(二)位运算符
#分类 : & , | , ~ , ^ , << , >>
#& 按位与
19 & 15
000...10011
000...01111
000...00011
#| 按位或
19 | 15
000...10011
000...01111
000...11111
#~ 按位非 (公式: -(n+1) )
~19
000...10011 (反码)
111...01100 (按位非,符号位也得变,补码)
100...10100 (取反加1,变成原码)==>-20
~-19
100...10011 (原码)
111...01101 (补码)
000...10010 (按位非,符号位也得变,补码)
000...10010 (原码)==>18
#^ 按位异或
19 ^ 15
000...10011
000...01111
000...11100
#<< 左移 (乘以2的次幂)
5 << 1
000...101
000..1010
#>> 右移 (除以2的次幂)
5 >> 2
000...101
000....10
000.....1
(三)比较运算符
#分类 : > , < , >= , <= , == , !=
最终结果只有两个,要么是True,要么是False
(四)身份运算符
#分类 : is 和 is not
(五)成员运算符
#分类 : in 和 not in
(六)逻辑运算符
#分类 : not , and , or
not 逻辑非
真变假,假变真
and 逻辑与
全真则真,一假则假
or 逻辑或
全假则假,一真则真
(七)赋值运算符
分类 : = , += , -= , *= , /= , //= , %= , **=
(八)运算符优先级
算数运算符 > 位运算符 > 比较运算符 > 身份运算符 > 成员运算符 > 逻辑运算符 > 赋值运算符
#运算优先级从低到高
逻辑运算符: or
逻辑运算符: and
逻辑运算符:not
成员测试: in, not in
同一性测试: is, is not
比较: <,<=,>,>=,!=,==
按位或: |
按位异或: ^
按位与: &
移位: << ,>>
加法与减法: + ,-
乘法、除法与取余: *, / ,%
正负号: +x,-x