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

2021-12-29 19:41:29 字數 1459 閱讀 7933

在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=(011110), 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<<2=8(左移2位,1000(2))

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

計算機中的負數表示:

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

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

例如:5=00000000 00000000 00000000 00000101

5取反後就為11111111  11111111  11111111  11111010其結果+1就是原數的補碼即為-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實現。

按位 與 或 與 異或 運算

規則 有0出0,全1為1 特殊用處 1 清零 如果想將乙個單元清零,即使其全部二進位制位為0,只要與乙個各位都為零的數值相與,結果為零。2 取乙個數中指定位 找乙個數,對應x要取的位,該數的對應位為1,其餘位為零,此數與x相與可以得到x中的指定位。3 x x 得到x的二進位制最右邊的1的位置i 從右...

詳解「 按位與 按位或 按位異或」

按位與 按位或 按位異或 1.按位與運算 按位與運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 否則為0。參與運算的數以補碼方式出現。例如 9 5可寫算式如下 00001001 9的二進位制補碼 00000101 5的二進位制補碼 0000...

2019 9 02 按位或,按位與, 按位異或

a b a a b a 或者 b 只要有乙個為 1,那麼,a 的最終結果就為 1 a b a a b a 和 b 二者必須都為 1,那麼,a 的最終結果才為 1 a b a a b 當且僅當 a 和 b 的值不一致時,a 的最終結果才為1,否則為0 計算時,先把其化為二進位制數 如 5 0101 3...