+
也可以表示字符串连接
加号除了表示 加 的意思,还可以表示 正
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
0 变成 1
1 变成 0
NOT 0111 (十进制 7)
= 1000 (十进制 8)
NOT 10101011 (十进制 171)
= 01010100 (十进制 84)
按位取反与在 C++ 和 Python 中的符号是~
同时是1,结果是1
否则是0
0101 (decimal 5)
AND 0011 (decimal 3)
= 0001 (decimal 1)
按位与在 C++ 和 Python 中的符号是&
注意区分 按位与 和 逻辑与
同时是0,结果是0
否则是1
0101 (decimal 5)
OR 0011 (decimal 3)
= 0111 (decimal 7)
按位或在 C++ 和 Python 中的符号是|
注意区分 按位或 和 逻辑或
相同为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