Python 运算符

简单运算

+
也可以表示字符串连接

加号除了表示 加 的意思,还可以表示 正

A = A + B 可以写作 A += B

-
减号除了表示 减 的意思,还可以表示 负

A = A - B 可以写作 A -= B

*
乘法
也可以表示字符串重复

A = A * B 可以写作 A *= B

/
严格向下取整(即使结果是负数)
注意取整方向,和 C++/Java 不一样

print(5 // 3)  # 1.6666666 = 1
print(5 // -3)  # -1.666666 = -2
print(-5 // 3)  # -1.6666666 = -2
print(-5 // -3)  # -1.666666 = 1

如果需要计算 a/b 的上取整(其中a是非负数,b是正数),可以使用 (a + b - 1) // b 或者 -(-a/b) 或者 -(a/-b)

A = A / B 可以写作 A /= B
A = A // B 可以写作 A //= B

%
余数的符号和除数相同
注意取整方向,和 C++/Java 不一样

print(5 % 3)  # 2
print(5 % -3)  # -1
print(-5 % 3)  # 1
print(-5 % -3)  # -2

A = A % B 可以写作 A %= B

乘方

**

A = A ** B 可以写作 A **= B

位运算

按位取反 (bitwise NOT, complement)

0 变成 1
1 变成 0

NOT 0111 (十进制 7)
= 1000 (十进制 8)

NOT 10101011 (十进制 171)
= 01010100 (十进制 84)

按位取反与在 C++ 和 Python 中的符号是~

按位与 (bitwise AND)

同时是1,结果是1
否则是0

    0101 (decimal 5)
AND 0011 (decimal 3)
  = 0001 (decimal 1)

按位与在 C++ 和 Python 中的符号是&
注意区分 按位与 和 逻辑与

按位或 (bitwise OR)

同时是0,结果是0
否则是1

   0101 (decimal 5)
OR 0011 (decimal 3)
 = 0111 (decimal 7)

按位或在 C++ 和 Python 中的符号是|
注意区分 按位或 和 逻辑或

按位异或 (bitwise XOR)

相同为0,不同为1
二进制不进位加法

    0101 (decimal 5)
XOR 0011 (decimal 3)
  = 0110 (decimal 6)

异或在 C++ 和 Python 中的符号是^,这个符号不表示乘方

异或 和 加法很类似,有结合律,交换律
异或的逆运算也是异或,如果 (a^b)==c 那 么a==(c^b) 并且 b==(c^a)
一个数字异或自己一定为0 (x^x)==0

比较运算

逻辑运算

运算符优先级

  1. Python 运算符
    1. 简单运算
      1. 乘方
    2. 位运算
      1. 按位取反 (bitwise NOT, complement)
      2. 按位与 (bitwise AND)
      3. 按位或 (bitwise OR)
      4. 按位异或 (bitwise XOR)
    3. 比较运算
    4. 逻辑运算
    5. 运算符优先级