Python学习笔记8

数值对象

再次重申:Python的对象是不能删除或修改的,只能在引用为0时被垃圾回收器回收。数值对象可以被赋值给一个变量。变量是对象的一个引用不等同于对象,数值变量是可以被删除的---使用del函数, 结果是所引用的数值对象的引用数减一,且该变量不再可用,除非重新给该变量赋值一个新的对象。

整型:

Python的整型等于C语言的长整型。 Python的长整型所能表达的数值与机器支持的内存有关,长整型对象后用”L”标识。(小写”l”也可以,但容易与数字1混淆,不建议使用)

八进制整数以”0”开始,十六进制整数以”0x”或”0X”开始。

 

浮点数:

Python的浮点数是双精度浮点数,完全遵守IEEE754号规范(52M/11E/1S)。

 

复数:

Python将复数作为了一种内建的数据类型。

运算符:

对于不同的数据类型,运算符有不同的操作定义。体现了重载概念。两个类型不同的数值进行运算时需要进行强制类型转换,转换方向:整数->长整数->浮点数->复数。

整数除法: 两个操作数都是整数,结果返回整数(地板除)。

浮点数除法:操作数中有浮点数,结果返回浮点数(真正的除法)。

Python有一个地板除运算符”//”,舍弃真实商的小数部分,返回真实商整数部分。如果两个操作数都是整数则返回整数,如果操作数中有浮点数则返回浮点数。例:5//2=2 5.0//2=2.0

位运算符:只适用于整数。

~ 取反,&与,|或,^异或,<<左移,>>右移。

因为整数在内存中是以补码的形式存储的,所以位操作是在补码的基础上进行的,得到的也是新值的补码,需要将补码转换为原码才能知道结果是多少。

转载他人的帖子:

二进制数在内存中以补码的形式存储

按位取反:二进制每一位取反,0变1,1变0。

~9的计算步骤:
转二进制:0 1001
计算补码:0 1001
按位取反:1 0110
_____
转为原码

按位取反:1 1001   
末位加一:1 1010
符号位为1是负数,即-10



~-9的计算步骤:
转二进制:1 1001
计算补码:1 0111
按位取反:0 1000

_____

转为原码:

正数的补码和原码相同,仍为:0 1000,即8


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

(1) 原码:在数值前直接加一符号位的表示法。
[+7]原= 0 0000111 B
[-7]原= 1 0000111 B
注意:
a. 数0的原码有两种形式:
[+0]原=0 0000000 B
[-0]原=1 0000000 B
b. 8位二进制原码的表示范围:-127~+127

(2)反码:
正数:正数的反码与原码相同。
负数:负数的反码,符号位为“1”,数值部分按位取反。
[+7]反= 0 0000111 B
[-7]反= 1 1111000 B
注意:
a. 数0的反码也有两种形式,即
[+0]反=0 0000000 B
[-0]反=1 1111111 B
b. 8位二进制反码的表示范围:-127~+127

(3)补码
正数:正数的补码和原码相同。
负数:负数的补码则是符号位为“1”。并且,这个“1”既是符号位,也是数值位。数值部分按位取反后再在末位(最低位)加1。也就是“反码+1”。

求负整数的补码,原码符号位不变,先将原码减去1,最后数值各位取反。(但由于2进制的特殊性,通常先使数值位各位取反,最后整个数加1。)


例如: 符号位 数值位
[+7]补= 0 0000111 B
[-7]补= 1 1111001 B

注意:
a. 采用补码后,可以方便地将减法运算转化成加法运算,运算过程得到简化。正数的补码即是它所表示的数的真值,而负数的补码的数值部份却不是它所表示的数的真值。采用补码进行运算,所得结果仍为补码。
b. 与原码、反码不同,数值0的补码只有一个,即 [0]补=00000000B。
c. 若字长为8位,则补码所表示的范围为-128~+127;进行补码运算时,应注意所得结果不应超过补码所能表示数的范围。

 

转化为原码

已知一个数的补码,求原码的操作其实就是对该补码再求补码:

⑴如果补码的符号位为“0”,表示是一个正数,其原码就是补码。

⑵如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。

 

 

 

   位移操作:左移n位相当于乘以2的n次方,右移n位相当于除以2的n次方。

 

内建的一些数学函数:

cmp(x,y):如果x大于y则返回1,如果x小于y则返回-1,如果x等于y则返回0.

str(x): 返回x值的十进制形式的字符串。例:str(0xff)返回’255’,str(55.3e2)返回’5530.0’

bool(obj): 返回对象的布尔值,也就是obj.__nonzero__()方法的返回值。

int(obj, base=10): 返回obj的整数部分,obj只能是数值或字符串。Base标识进制参数。

long(obj, base=10):返回ojb的整数表示,obj为字符串或数据对象。

float(obj): 返回ojb的浮点数表示,obj为字符串或数据对象。

complex(str)/complex(real,imag=0.0): 构造一个复数。

abs(obj): 返回绝对值。

coerce(x,y): 根据类型转换规则,返回转换后的x,y组成的元组(x,y)。整型->浮点型->复数。

divmod(x,y): 返回x除以y的商和余数组成的元组。例:divmod(10,3)返回(3,1).

pow(x,y): 返回x的y次方。

pow(x,y,z):相当于pow(x,y)%z,但性能更好,多用于密码运算。

round(x,y): 返回x在小数点后y位上四舍五入之后的值。例:round(3.1415,3)返回3.142.

hex(x): 返回x的16进制数值的字符串形式。

oct(x): 返回x的八进制数值的字符串形式。

chr(x): 返回以x为ASII码的字符。

unichr(x): 返回x的Unicode字符。输入值取决与Python是构建与UCS-2还是UCS-4。

ord(x): 返回字符x的ASII码或Unicode的十进制表示。

bool(obj): 返回对象的__nonzero__方法决定。无此方法的对象,默认是True。

random模块的函数:

random(): 返回0.0 到1.0之间的一个随机数。

randrange([start],stop,[step]):随机返回依据参数生成序列中的一个。

randint(int1, Int2):随机返回两个整数之间的一个整数。

uniform(float1,float2):随机返回两个浮点数之间的一个浮点数。

choice(序列): 随机返回序列中的一个元素。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值