位運算與位移怎樣理解?

在python中,位運算分爲按位與運算(&)、按位或運算(|)、按位異或運算(^)、按位取反運算(~)、按位左移運算(<<)和按位右移運算(>>),當然了在别的編程語言裏面也有涉及這個知識點,譬如C語言、PHP語言、JAVA語言等等,原理都是想通的,俗話說的好“溫故而知新”,我在這裏把這個知識點再強調一遍。

學過計算機的人對二進制并不陌生,這個位運算其實就是基于二進制的,那麽我們在python代碼中什麽兩個變量,方便我們通過實驗來講解位運算:
a = 623 #變量a的二進制爲:0010 0110 1111
b = 139 #變量b的二進制爲:0000 1000 1011

1、按位與運算(&)
我們先把a和b進行按位于運算,也就是
print a&b #打印的結果是11
爲什麽結果是11呢?其實在按位與運算中,參與運算的兩個值,如果兩個相應位都爲1,則該位的結果爲1,否則爲0,那麽a和b進行按位與運算之後的二進制就是“0000 0000 1011”,将這個二進制的數字轉換成十進制結果就是11。請看下面的按位與運算圖解:

2、按位或運算(|)
print a|b # 打印結果是751
在按位或運算中,隻要對應的二個二進位有一個爲1時,結果位就爲1。那麽a和b進行按位或運算的的二進制結果就爲0010 1110 1111,轉換爲二進制的結果就是751。請看下面的按位或運算圖解:

3、按位異或運算(^)
print a^b # 運算結果爲740
在按位異或運算中,當兩對應的二進位相異時,結果爲1,相同則爲0,那麽a和b進行按位異或運算的二進制結果就爲0010 1110 0100,轉換爲二進制的結果就爲740。請看下面的按位異或運算圖解:

4、按位取反運算(~)
print ~a # 運算結果爲-624
print ~b # 運算結果爲-140
在按位取反運算中,對數據的每個二進制位取反,即把1變爲0,把0變爲1 。~a的二進制按位取反運算後的二進制結果爲1111 1101 1001 0000轉換爲10進制的結果是-624,~b的二進制按位取反運算後的二進制結果爲1111 0111 0100,轉換爲十進制的結果爲-140,這裏涉及到反碼、補碼知識,忘記了的同學請自行惡補!請看下面的按位取反運算圖解:

5、按位左移運算(<<)
print a<<b #運算結果爲434167633083893069286773515120622788069556224
在左移動運算中,運算數的各二進位全部左移若幹位,由 << 右邊的數字指定了移動的位數,高位丢棄,低位補0。因爲數字太大了,我就懶得寫了。

6、按位右移運算(>>)
print a>>b #運算結果爲0
在右移動運算中,把”>>”左邊的運算數的各二進位全部右移若幹位,>> 右邊的數字指定了移動的位數,這個數字推算起來也不得了,我也就不多寫了,你知道是怎麽回事就行了。

 a<<b其實就是把a轉換成二進制,向左移動139位,然後在轉換成十進制。
 a>>b其實就是把a轉換成二進制,向右移動139位,然後在轉換成十進制。

因爲例子中的數字太大,我現在把數字變小一點,方便大家理解
a=11 #二進制爲1011
b=3  #二進制爲11
那麽a<<b的運算結果如下:
0000 0000 1011
向左邊移動3個位置,結果就爲:
0000 0101 1000
轉換成十進制就等于88

a>>b的運算結果如下:
那麽a>>b的運算結果如下:
0000 0000 1011
向右邊邊移動3個位置,結果就爲:
0000 0000 0001

轉換成十進制就等于1

針對python的位運算今天就講這麽多,如果你還有不明白的,歡迎在下方留言,咱們一起學習,共同研究!

資源下載
下載價格10 積分
此資源購買後10天内可下載。1、如果您遇到版本沒有及時更新,或者無法下載(請勿重複支付)等問題,請聯系客服QQ:125252828 微信号:dobunkan
2、注意:本站資源永久免費更新,标題帶“已漢化”字樣的屬于漢化過的!!!
3、如果您購買前沒有注冊賬戶,請自行保存網盤鏈接,方便後續下載更新
4、1積分等于1元。購買單個資源點立即支付即可下載,無需注冊會員。
5、本站支持免登陸,點立即支付,支付成功就就可以自動下載文件了(因部分插件和模闆沒來得及漢化,如果需要漢化版,請先咨詢清楚再買!)。
6、如果不會安裝的,或者不會使用的以及二次開發需求,費用另外計算,詳情請咨詢客服!
7、因程序具備可複制傳播性質,所以,一經兌換,不退還積分,購買時請提前知曉!
常見問題
源碼、模闆插件上傳安裝提示錯誤怎麽辦?
1、本站在打包Wordpress插件或者模闆的時候,一般會将官方文檔、官方申明、已經其他文件一起打包,因此,大部分插件模闆在安裝前需要解壓縮。 2、強烈推薦服務器使用linux系統,環境推薦 apache2+php+mysql,别給我說你還是你還是使用的windows服務器。。。。
購買後無法下載或者提取碼錯誤怎麽辦?
請聯系客服QQ:125252828 或者微信:dobunkan,由于騷擾信息過多,加好友時請說明原由!
小白建站啥都不會怎麽辦?
請與客服聯系,溝通具體的技術支持。由于搭建環境、調試程序需要花費一些時間,可能會收取一些費用。
怎樣催促站長更新?
直接微信或者QQ聯系本站客服,提供最新版本号以及軟件名稱,客服會在第一時間更新,如果超過2-3年未更新的請先聯系站長後再确認是否需要下載。
爲什麽打開鏈接看不到最新版本?
因爲網盤默認是按名稱排序,最新版本不一定會排在第一個,請打開鏈接後點擊右上角的“修改日期”,這時候更新列表就會按更新日期排序了。
原文鏈接:https://www.dobunkan.com/server/163,轉載請注明出處。
0

評論0

請先
顯示驗證碼
沒有賬号?注冊  忘記密碼?

社交賬号快速登錄

學課技術網歡迎您的加入!