Python 常用运算

2019-07-19  本文已影响0人  noteby

布尔运算

运算(按优先级升序排列) 结果
x or y if x is false, then y, else x
x and y if x is false, then x, else y
not x if x is false, then True, else False

数字类型

运算 结果
divmod(x, y) (x // y, x % y)
pow(x, y)或x ** y x 的 y 次幂
math.trunc(x) x 截断为 Integral
round(x[, n]) x 舍入到 n 位小数,半数值会舍入到偶数。 如果省略 n,则默认为 0。
math.floor(x) <= x 的最大 Integral
math.ceil(x) >= x 的最小 Integral

整数类型的按位运算

运算(以优先级升序排序) 结果
x | y x 和 y 按位 或 \
x ^ y x 和 y 按位 异或
x & y x 和 y 按位 与
x << n x 左移 n 位
~x x 逐位取反
~3 的计算步骤
转二进制:0 11
计算补码:0 11
按位取反:1 00
转为原码
按位取反:0 11  
末位加一:0 100
符号位为1是负数,即-4

~-3 的计算步骤
转二进制:1 11
计算补码:1 01
按位取反:0 10
转为原码
按位取反:0 01  
末位加一:0 10
符号位为1是负数,即-2

原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。
例如,用8位二进制表示一个数,+11的原码为00001011,-11的原码就是10001011。
反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

import math

print('# 布尔运算')
print(2 or 3)  # 2
print(2 and 3)  # 3
print(not 3)  # False

print('# 数字类型')
print(divmod(3, 2))  # (1, 1)
print(pow(2, 3))  # 8
print(2**3)  # 8

print(math.trunc(1.678))  # 1
print(round(12.456, 2))  # 12.46
print(math.floor(-2.3))  # -3
print(math.ceil(3.213))  # 4

print('# 整数类型的按位运算')
print(bin(2), bin(3))
print(2 | 3)  # 3
print(2 ^ 3)  # 1
print(2 & 3)  # 2
print(3 << 1)  # 6
print(3 >> 1)  # 1
print(~3)  # -4
print(~-3)  # 2

print('# 整数类型的附加方法')
n = 3
print(bin(3))  # 0b11
print(n.bit_length())  # 2

print('# 浮点类型的附加方法')
print((1.23).as_integer_ratio()) # (2769713770832855, 2251799813685248) 返回一对整数,其比率正好等于原浮点数并且分母为正数。 无穷大会引发 OverflowError 而 NaN 则会引发 ValueError
print((-2.0).is_integer())  # True
print((1.1).is_integer())  # False
上一篇 下一篇

猜你喜欢

热点阅读