在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)
其他位的運算:(<<,>>)
python http://www.iplaypython.com/
1. <<:左移把一個數的bit向左移動一定數目例如:2=0010(2) 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;