首頁 > 後端開發 > Python教學 > python中 「與,或,異或」與C語言的不同

python中 「與,或,異或」與C語言的不同

高洛峰
發布: 2016-10-19 13:32:52
原創
1635 人瀏覽過

在python中:

按位的運算,都按位的運算,都是把參加運算的數的二進位形式進行運算。

1.與運算:A與B值均為1時,A、B與的運算結果才為1,否則為0 (運算符:&)

2.或運算:A或B值為1時,A、B或的運算結果才為1,否則為0  (運算符:|)

3.異或運算:A與B不同為1時,A、B的預算結果才為1,否則為0 (運算子:^)

4.位元翻轉(位元取反):將記憶體中表示數字的2進制數取反0取1,1取0 (運算子:~)

運算方式:

1.與運算:5&3計算過程為0101(2)&0011(2)=0001(2)=1

註記:意思是把兩個數全部轉換為二進位進行比較,如上例:5的二進位為0101,3的二進制為0011.則這兩個數的二進制數種第一位相同,取一,其餘全部取零。得0001,再轉換為十進位結果為1

為方便理解再舉個例子,《python核心編程》中表5-4中的例子:>>>30&45  結果為12

即30=(0​​11110), 45=(101101)位元運算得12(1100)

其餘三種位元運算與此相同

2.或運算:5|3計算過程為0101(2)|0011(2)=0111(2)= 7

3.異或運算:5^3計算過程為0101(2)^0011(2)=0110(2)=6

4.位元翻轉(位元取反):5=0101(2 ) 計算過程~5=1010(2)   例如:X的位元運算為-(X+1)

其他位的運算:(>)

1.

2. >>:右移方式與左移相同只是方向相反

計算機中的負數表示:

將原數按位取反後+1=原數的補碼(原數的反數)

原數:在計算機中用2進制的方式表示一個普通數字所形成的數就是原數

       例如:5=00000000 00000000 00000000 00000101

5取反後就為11111111 1111原數的補碼即為-5的2進位表示

C語言中:

優先權從高到低,依序為~、&、^、|

按位與運算有兩種典型用法,一是取一個位串資訊的某幾位,如以下程式碼截取x的最低7位:x & 0177。二是讓某變數保留某幾位,其餘位置0,如以下程式碼讓x只保留最低6位元:x = x & 077。

按位或運算的典型用法是將一個位元串資訊的某幾位置為1。如將要得到最右4位為1,其他位元與變數j原來其他位元保持相同,可用邏輯或運算017|j;

位元異或運算的典型用法是求一個位元串資訊的某幾位資訊的反。如欲求整數變數j的最右4位訊息的反,用邏輯異或運算017^j,就能求得j最右4位的訊息的反,即原來為1的位,結果是0,原來為0的位,結果是1。交換兩個值,不用臨時變數,假如a=3,b=4。要將a和b的值互換,可以用以下賦值語句實現:

a=a^b; b=b^a;     a=a^b;

取反運算常用來產生與系統實作無關的常數。若要將變數x最低6位置成0,其餘位元不變,可用程式碼x = x & ~077實作。


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板