国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > Python > 正文

Python運算符之位運算符

2023-04-27 19:03:19
字體:
供稿:網(wǎng)友

Python中的位運算符與其它語言中的位運算符作用相同。

位運算符也稱二進制運算符,并且這些運算符只用于對整型數(shù)進行運算。

進行位運算時,整型數(shù)被轉(zhuǎn)換為二進制形式,然后位運算符對每位執(zhí)行有關(guān)運算后,將結(jié)果再轉(zhuǎn)換回十進制形式,并返回給用戶。

Python中共有6種位運算符:

(1)&:按位與運算

對應(yīng)位上的二進制數(shù)進行與運算,如果參加位運算的兩個二進制數(shù)為1,則結(jié)果為1,只要有一個為0,則結(jié)果為0,如10和4進行按位與運算,他們對應(yīng)的二進制形式分別為:1010 和 100,則:

 1 0 1 0
& 0 1 0 0
-----------
  0 0 0 0

即10和4按位與運算的結(jié)果為二進制的0,也對應(yīng)著10進制的0,最終結(jié)果即為0,即 10 & 4 = 0

再如,5和6進行按位與運算,其對應(yīng)的二進制形式分別為: 101 和 110,

  0 1 0 1
& 0 1 1 0
-------------
 0 1 0 0

其運算結(jié)果為二進制的100,即十進制的4,也就是說: 5 & 6 = 4

在Python中的運行結(jié)果如下:

Python按位與運算

(2)|:按位或運算

按位或運算是二進制對應(yīng)的每位進行或運算。如果對應(yīng)的兩位都為0,則結(jié)果為0,只要有一個為1,則結(jié)果為1。

10 和 4的或運算:

 1 0 1 0
| 0 1 0 0
------------
 1 1 1 0

其或運算的結(jié)果為二進制的 1110,對應(yīng)著十進制的 14,即 10 | 4 = 14.

5 和 6的或運算:

 0 1 0 1
| 0 1 1 0
------------
 0 1 1 1

5 和 6的按位或運算結(jié)果為 0111,對應(yīng)的十進制為 7 ,即 5 | 6 = 7.

在Python中的運行結(jié)果:

Python中的按位或運算

(3)^:按位異或運算

按位異或運算,即對應(yīng)的兩個二進制位不同時,結(jié)果為1,否則為0.

10 和 4 的按位異或運算:

 1 0 1 0
^ 0 1 0 0
------------
 1 1 1 0

即,結(jié)果為二進制1110,對應(yīng)的十進制為14,亦即: 10 ^ 4 = 14

5 和 6 的按位異或運算:

 0 1 0 1
^0 1 1 0
------------
 0 0 1 1

0011對應(yīng)的十進制數(shù)為3,也就是說: 5 ^ 6 = 3

在Python中的運行結(jié)果:

Python中的按位異或運算

(4)~:按位取反運算符

該運算是單操作數(shù)運算符,即其只需要一個操作數(shù)參與運算。運算時,二進制數(shù)上的每位取反,即1變?yōu)?, 0變?yōu)?.

這里涉及到數(shù)字在計算機中的存儲形式,在計算機中,最高位為符號位,符號位為0時表示正數(shù),符號位為1時表示負數(shù)。

數(shù)字在計算機中是以補碼的形式進行存儲的,整數(shù)的補碼與原碼相同,負數(shù)的補碼是在原碼的基礎(chǔ)上除符號位外,按位取反后,再加1.

如 +1,原碼為0 0001,補碼為 0 0001.

-1 ,原碼為1 0001,補碼為:1 1111。

再如:+2 ,原碼為: 0 0010,補碼為:0 0010.

-2,原碼為:1 0010,補碼為:1 1110

10按位取反運算(第1位為符號位):

~ 0  1 0 1 0
 --------------
 1  0 1 0 1

結(jié)果最高位為1,為負數(shù),因為負數(shù)在計算機中以補碼形式存儲,轉(zhuǎn)換為原碼(先減1,再按位反)為:

1 1011

即對應(yīng)的十進制數(shù)為 -11,即: ~10 = -11.

5 按位取反運算:

~ 0  0 1 0 1
---------------
 1  1 0 1 0

結(jié)果對應(yīng)的原碼為: 1 0110,對應(yīng)的十進制數(shù)為:-6

在Python中的運行結(jié)果:

Python中的按位取反運算

(5)<<:按位左移運算符

其形式為:m<<n

按位左移運算,m對應(yīng)的二進制數(shù)的每位向左移動n位,后面補0.

如10的二進制數(shù) 1010 向左移動兩位后為:10 1000,其對應(yīng)的十進制數(shù)為:40.

5的二進制數(shù):0101,向左移動兩位后為:1 0100,其對應(yīng)的十進制數(shù)為:20

也就是說,一個整數(shù)左移n位相當(dāng)于這個數(shù) m×2n

在Python中的運算結(jié)果:

Python中按位左移運算

(6)>>:按位右移運算符

其形式為:m >> n

即m對應(yīng)的二進制數(shù)每位向右移動n位,移出的二進制數(shù)字去掉,最左邊空出的變?yōu)?.

10的二進制 1010 向右移動1位為:0101,即變?yōu)槭M制的5;再移動1位變?yōu)?010,變?yōu)?,再移動1位變?yōu)?001,變?yōu)?,再移動就一直為0了。

即每向右移動1位,相當(dāng)于原數(shù)除以2,只保留整數(shù)部分;移動n位,相當(dāng)于原數(shù)除以2n,只保留整數(shù)部分。

在Python中的運算結(jié)果:

Python中的按位右移運算

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 太和县| 灌南县| 白河县| 腾冲县| 鞍山市| 当涂县| 洱源县| 肇州县| 鄢陵县| 桃江县| 寿宁县| 兴国县| 松溪县| 汽车| 阿拉善盟| 京山县| 涡阳县| 玛多县| 竹溪县| 缙云县| 岳普湖县| 西宁市| 长泰县| 江孜县| 磴口县| 嘉鱼县| 长阳| 锡林浩特市| 金堂县| 岑巩县| 彝良县| 古田县| 双桥区| 永川市| 卢湾区| 庄浪县| 鸡东县| 调兵山市| 青州市| 延寿县| 泰州市|