位運算子取反_Python 基礎入門之從變數到異常值處理(變數、運算子、資料型別以及位運算)...
阿新 • • 發佈:2021-01-24
技術標籤:位運算子取反
一、變數
Python變數由三個部分組成,分別是變數名、賦值符號以及變數值。
#變數的組成
name = "Hello China"
變數的命名方式:
- 變數名可以包括字母、數字、下劃線,但不能以數字作為開頭。
- 駝峰體命名,首字母大寫。
- 變數的命名區分大小寫。
- 在使用變數前,先對其賦值。
變數的特性:
- id。變數值的記憶體空間地址,使用id()來檢視變數的記憶體地址
- type。使用type()來檢視變數的資料型別
- 變數值=儲存值
二、變數的資料型別及轉換
資料型別:
- str : 表示是一個字串型別
- int :表示是一個整型
- bool:表示是一個布林型,真:True 假:False
- float:表示是一個小數型別,浮點數型別
通過type()函式來檢視變數的資料型別。
拓展:
- 檢視變數的長度,使用bit_length()函式。
2. 可以用decimal
包裡的Decimal
物件和getcontext()
方法來保留浮點小數後n位。用getcontext().prec
來調整精度。
例:使 1/3 保留 4 位
3. 布林 (boolean) 型變數只能取兩個值,True
和False
。當把布林型變數用在數字運算中,用1
和0
代表True
和False
。
4. 除了直接給變數賦值 True
和 False
,還可以用 bool(X)
建立變數, X
可以是:
- 基本型別:整型、浮點型、布林型
- 容器型別:字串、元組、列表、字典和集合
例:bool
作用在基本型別變數:X
只要不是整型 0
、浮點型 0.0
,bool(X)
就是 True
,否則為 False
。
bool
作用在容器型別變數:X
只要不是空的變數,bool(X)
就是True
,否則False
。 對於容器變數,裡面沒元素則為空。
5. 判斷兩個型別是否相同推薦使用isinstance()
,它被認為子類是一種父類型別,考慮繼承關係。
資料型別的轉換:
- 轉換為整型
int(x, base=10)
- 轉換為字串
str(object='')
- 轉換為浮點型
float(x)
三、運算子
- 算數運算子
- 加法:+
- 減法:-
- 乘法: *
- 除法: /
- 整除://,(地板除,只取結果的整數部分,並且是向下取整,若結果為3.2取3,若結果為-3.2則取-4)
- 取餘:%
- 冪次:**
- 比較運算子
- 等於 ==
- 不等於 != 或 <>(a != b 或 a <> b)
- 大於 >
- 小於 <
- 大於等於 >=
- 小於等於 <=
- 邏輯運算子
- 與 and :兩者都為True,則返回True,否則為False。
- 或or :兩者至少有一者為True,則返回True。
- 非 not : 如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。
- 位運算子(位運算過程中,把數字轉化成二進位制計算,然後再轉化成數字。)
- 按位與 & :運算的兩個值相應位都為1,則該位的結果為1,否則為0。
- 按位或 | :運算的兩個值相應位只要有一個位置為1,則該位的結果為1。
- 按位異或 ^ :運算的兩個值相應位數值不同,則結果為1,否則為0。
- 按位取反 ~ :運算資料的每個二進位制位取反,即把1變為0,把0變為1 。
- 左移位 << :若 a <<2 將數字a對應的二進位制數集體向左移動2位,後面空餘位補零。
- 右移位 >> :若 a >> 3 將數字a對應的二進位制數集體向右移動2位,前面空餘位補零。
- 其它運算子
- 存在 in :若 x 在 y 中,則返回True,否則返回False。
- 不存在 not in :若 x 不在 y 中,則返回True,否則返回False。
- 是 is : id(x) == id(y) , 如果引用的是同一個物件則返回 True,否則返回 False。
- 不是 is not : id(a) != id(b)。如果引用的不是同一個物件則返回結果 True,否則返回 False。
注意:
- is, is not 對比的是兩個變數的記憶體地址
- ==, != 對比的是兩個變數的值
- 比較的兩個變數,指向的都是地址不可變的型別(str等),那麼is,is not 和 ==,!= 是完全等價的。
- 對比的兩個變數,指向的是地址可變的型別(list,dict,tuple等),則兩者是有區別的。
例:比較的兩個變數均指向不可變型別。
例:比較的兩個變數均指向可變型別。
四、位運算
1. 原碼、反碼和補碼
二進位制有三種不同的表示形式:原碼、反碼和補碼。
原碼:就是其二進位制表示(注意,有一位符號位)。
00 00 00 11 — 3
10 00 00 11 — -3
反碼:正數的反碼就是原碼,負數的反碼是符號位不變,其餘位取反(對應正數按位取反)。
00 00 00 11 — 3
11 11 11 00 — -3
補碼:正數的補碼就是原碼,負數的補碼是反碼+1。
00 00 00 11 — 3
11 11 11 01 — -3
符號位:最高位為符號位,0表示正數,1表示負數。在位運算中符號位也參與運算。
2. 位運算規則
- 位與運算子運算規則:0&0=0&1=1&0=0,1&1=1
- 位或運算子運算規則:0|1=1|0=1|1=1,0|0=0
- 位求反運算子運算規則:~0=1,~1=0
- 位異或運算子運算規則:0^0=1^1=0,0^1=1^0=1
- 左移位運算子運算規則:原來的所有位左移,最低位補0,相當於乘以2
- 右移位運算子運算規則:原來的所有位右移,最低位丟棄,最高位使用符號位填充,相當於整除2