按位運算子是把數字看作二進位制來進行計算的。python中的按位運算法則如下:
按位與 ( bitwise and of x and y )
& 舉例: 5&3 = 1 解釋: 101 11 相同位僅為個位1 ,故結果為 1
按位或 ( bitwise or of x and y )
| 舉例: 5|3 = 7 解釋: 101 11 出現1的位是 1 1 1,故結果為 111
按位異或 ( bitwise exclusive or of x and y )
^ 舉例: 5^3 = 6 解釋: 101 11 對位相加(不進製)是 1 1 0,故結果為 110
按位反轉 (the bits of x inverted )
~ 舉例: ~5 = -6 解釋: 將二進位制數+1之後乘以-1,即~x = -(x+1),-(101 + 1) = -110
按位反轉僅能用在數字前面。所以寫成 3+~5 可以得到結果-3,寫成3~5就出錯了
按位左移 ( x shifted left by n bits )
<< 舉例: 5<<2 = 20 解釋:101 向左移動2位得到 10100 ,即右面多出2位用0補
按位右移 ( x shifted right by n bits )
>> 舉例: 5>>2 = 1 解釋:101 向右移動2位得到 1,即去掉右面的2位
————————我是分割線————————
在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. >>:右移 方式與左移相同只是方向相反
計算機中的負數表示:
將原數按位取反後+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實現。
按位運算子 python
按位運算子是二進位制的運算子,計算結果為int型。a 11 2print type a a 結果是21.將兩個數都化為二進位制,11 1011 2 10 2.將位數少的用0補齊,在左邊補0與位數多的位數一致,例如2 0010 3.將11與補齊後的2,每一位進行比較,若相同位都為1,就取1反之取0 4...
python數的按位翻轉 Python按位運算子
按位運算子對位進行運算並執行逐位運算。假設a 60 並且b 13 現在,以二進位制格式,它們的值將分別為0011 1100和0000 1101。下表列出了python語言支援的按位運算子,並分別舉例說明,我們將上述兩個變數 a和b 用作運算元 a 0011 1100 b 0000 1101 a b ...
python語言按位取反 python的按位運算
華電北風吹 天津大學認知科學與計算重點實驗室 最後修改日期 2015 8 6 python提供了豐富的位運算操作符,例如按位與,按位或,按位異或,左移位,右移位和取反操作,例子 如下 a,b 45,83 bin a bin b 0b101101 0b1010011 a b,bin a b 127,0...