數值對象
再次重申: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 Bb. 8位二進制原碼的表示范圍:-127~+127(2)反碼:正數:正數的反碼與原碼相同。負數:負數的反碼,符號位為“1”,數值部分按位取反。[+7]反= 0 0000111 B[-7]反= 1 1111000 B注意:a. 數0的反碼也有兩種形式,即[+0]反=0 0000000 B[-0]反=1 1111111 Bb. 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(序列): 隨機返回序列中的一個元素。
新聞熱點
疑難解答