运算
2019年5月25日大约 2 分钟约 724 字
运算符
在 Python 中,
以下形符属于运算符:
以下形符在语法中归类为分隔符:
上述分隔符的后半部分其实为增强赋值操作符,它们在词法上作为分隔符,但也有运算作用:
浮点运算
浮点数取值范围和小数精度都存在限制,但常规计算可忽略。浮点数间运算存在不确定尾数,不是 bug。因为二进制表示小数,可以无限接近,但不完全相同。这种不确定尾数一般发生在左右。
浮点运算的精度:
0.4 - 0.3 # 0.10000000000000003
0.4 - 0.3 == 0.1 # False
由此应该考虑自己的 fc_stw 算法在设计模糊合成运算函数时的问题了。
除法相关
除法运算永远返回浮点数类型;
求整数商——地板除法运算(向下取整)
>>> 9 // 2 4 >>> -9 // 2 -5
%
是求模运算符,返回两个数相除的余数。
虚数
直接表示虚数时直接加 j 后缀,而不用加乘号
z = 5.2j # example
以运算得到一个虚数时需要乘号:
b = 5.2 z = b*1j # 5.2j
位运算符
python 位运算符
异或的本质法则是“相异为真,相同为假”,相当于在“或”的情况下加上“相异”
符号 | 说明 | 示例 |
---|---|---|
& | 按位与运算符 | a & b 结果为 12,二进制解释为 0000 1100 |
| | 按位或运算符 | a | b 结果为 61, 二进制解释为 0011 1101 |
^ | 按位异或运算符:当两对应的二进位相异时结果为 1,否则为 0。 | a ^ b 结果为 49,二进制解释为 0011 0001 |
~ | 按位取反运算符。~x 相当于-x-1 | ~a 结果为-61,二进制解释为 1100 0011,为一个有符号二进制数的补码形式。 |
<< | 左移运算符:运算数的各二进位全部左移若干位。高位丢弃,低位补 0。 在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以 2 的 1 次方,左移 n 位就相当于乘以 2 的 n 次方。 | a << 2 结果为 240,二进制解释为 1111 0000 |
>> | 右移运算符:运算数的各二进位全部右移若干位。 右移一位相当于除 2,右移 n 位相当于除以 2 的 n 次方。 | a >> 2 结果为 15,二进制解释为 0000 1111 |
>>> a = 0b00111100 >>> a 60 | >>> b = 0b00001101 >>> b 13 | # 直接让 a, b = 60, 13 结果等效 |
异或运算
- 两个相同的数进行异或计算结果为
00000000…
; - 一个数与
00000000…
进行异或计算结果为其本身。
因而有:
![]() | ![]() |
---|
逻辑运算符
运算符 | 作用 |
---|---|
and | 布尔“与” |
or | 布尔“或” |
not | 布尔“非” |