下表中变量 a 为 60,b 为 13二进制格式如下:
a = 0011 1100 b = 0000 1101运算符描述实例
& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100
| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 (a | b) 输出结果 61 ,二进制解释: 0011 1101
^ 按位异或运算符:当两对应的二进位相异时,结果为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
<< 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 a << 2 输出结果 240 ,二进制解释: 1111 0000
>> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数 a >> 2 输出结果 15 ,二进制解释: 0000 1111
内建函数与工厂函数
1.工厂函数
什么是工厂函数,也就是说他们看上去虽然像函数但是实际上是类,当调用时实际上是生成了该类的一个实例,所以把他们叫做工厂函数。
bool(obj)返回对象的布尔值,转换 bool 值时除了 \'\'、""、\'\'\'\'\'\'、""""""、0、()、[]、{}、None、0.0、0L、0.0+0.0j、False 为 False 外,其他都为 True
In [36]: bool(32)
Out[36]: True
In [37]: bool(\'dasd\')
Out[37]: True
In [38]: bool(0)
Out[38]: False
In [39]: bool(-1)
int(obj)返回对象的整数表示,int可将数字,字符串转成十进制的整型表示, 同时提供一个选项base,将传入的字符串规定为相应的进制,然后转化为10进制
In [47]: int(123)
Out[47]: 123
In [48]: int(\'1fd\',16)
Out[48]: 509
float()返回对象的浮点表示
In [50]: float(4)
Out[50]: 4.0
In [51]: float(\'4\')
Out[51]: 4.0
In [52]:
2.内建函数
对于数值而言,python有4个内置函数用于数值运算:abs(),divmod(),pow(),round()
abs()
返回数值的绝对值需要特殊说明的是对于复数而言,其本质含义是该虚数所代表的向量的长度。比如|a+bi|指的是复数a+bi的模,即复平面上该复数向量a+bi的长度=根号(a的平方+b的平方)。
divmod()
它将两个(非复数)数字作为实参,并在执行整数除法时返回一对商和余数。对于混合操作数类型,适用双目算术运算符的规则。对于整数,结果和 (a // b, a % b) 一致。对于浮点数,结果是 (q, a % b) ,q 通常是 math.floor(a / b) 但可能会比 1 小。在任何情况下, q * b + a % b 和 a 基本相等;
pow()
pow和**一样都可以完成对一个数字的次方,不同的是对于pow而言可以多接受一个参数(数字)完成对此数字取余,pow(x,y,z) 效率比pow(x,y)%z高。
round(num[,ndigits])
返回 number 舍入到小数点后 ndigits 位精度的值。 如果 ndigits 被省略或为 None,则返回最接近输入值的整数。