位運算包括:&(與)、
|(或)、
^(異或)、
~(取反)、
>>(右移)
、<<(左移)
、>>>(無符號右移
)按位與 &
兩位全為1,結果才為1。
0&0=0
;0&1=0
;1&0=0
;1&1=1
;例如:51&5,即
0011 0011 & 0000 0101=0000 0001
,因此51&5=1
;位運算的特殊用法
清零:如果想將乙個單元清零,即使其全部二進位制位為0,只要與乙個各位都為零的數值相與,結果為零。
取乙個數中指定位:
例如,設x=1010 1100,取x的低
4位,用
x&0000 1111
即可得到
方法:找乙個數,對應x要取的位,該數的對應位為
1,其餘位為
0,此數與
x進行「與運算」可以得到
x中的指定位。
按位或 |
只要有乙個為1,結果就為1。
0|0=0
;0|1=1
;1|0=1
;1|1=1
;例如:51|5,即
0011 0011 | 0000 0101=0011 0111
,因此51&5=55
;或運算的特殊用法
常用來對乙個資料的某些位置置1。
例如:將x=1010 0000的低4位置
1,用x|0000 1111=1010 1111
即可得到
方法:找乙個數,對應x要置
1的位,該數的對應位為
1,其餘位為
0,此數與
x進行「或運算」可以使
x中的某些位置置1。
異或運算 ^
兩個相應位為「異」(值不同),則該位結果為1
,否則為0。
0^0=0
;0^1=1
;1^0=1
;1^1=0
;51^5,即
0011 0011 ^ 0000 0101=0011 0110
,因此51^5=54
;異或運算的特殊用法
使特定位翻**找乙個數,對應x要翻轉的各位,該數的對應位為
1,其餘位為
0,此數與
x對應位進行「異或運算」即可。
例如:將x=1010 1110的低
4翻轉,用
x|0000 1111=1010 0001
即可得到
與0相異或,保留原值。例如:將
1010 1110^0000 0000=1010 1110
兩個變數交換值:a=a^b,b=a^b,a=a^b(原理:利用乙個數異或本身等於
0和異或運算滿足交換率
) 4、
取反運算 ~
對乙個二進位制位按位取反,即0變為1,
1變為0。
~0=1
,~1=0;
左移運算
<<
將乙個運算物件的各二進位制位全部左移若干位(左邊的二進位制位丟棄,右邊補0)
2<<1=4;
-14(即二進位制的
11110010
)<<2=(11001000)
若左移時捨棄的高位不包含1,則每左移一位,相當於該數乘以2。
11(1011)<<2=44
11(00000000 00000000 00000000 00001011)(32bit)準確表達
右移運算》
將乙個運算物件的各二進位制位全部右移若干位,正數左補0,負數左補
1,右邊丟棄。運算元每右移一位,相當於該數除以2。
左補0還是補
1取決於被運算元是正還是負。
4>>2=1;
-14(11110010)>>2=-4(11111100)
-14(即二進位制的
11110010
)<<2=(11001000)
無符號右移運算》
將乙個運算物件的各二進位制位全部右移指定位數,右移後左邊空出的位用0來補充,移出右邊的位被丟棄
-14(
11111111 11111111 11111111 11110010
)>>>2=(00111111 11111111 11111111 11111100)1073741820
負數以其正值的補碼形式表示
原碼:乙個整數按照絕對值大小轉換成的二進位制數稱為原碼
反碼:將二進位制數按位取反,所得到的新二進位制數稱為原二進位制數的反碼
補碼:反碼加1稱為補碼
java Java運算優先順序
加法 減法 乘法 除法 取餘運算 只能比較基本型別資料之間的關係,不能比較物件之間的關係。只能比較基本型別資料之間的關係,不能比較物件之間的關係。只能比較基本型別資料之間的關係,不能比較物件之間的關係。只能比較基本型別資料之間的關係,不能比較物件之間的關係。若使用該運算子比較兩個物件的引用 變數 則...
Java 中的位運算
移位運算子 包括 右移 左移 無符號右移 例子 5 3 1 1111 1111 1111 1111 1111 1111 1111 1011 1111 1111 1111 1111 1111 1111 1111 1111 其結果與 math.floor double 5 2 2 2 完全相同。5 3 ...
Java 中的位運算
計算機中的原碼 反碼和補碼 移位運算子 包括 右移 左移 無符號右移 例子 5 3 1 1111 1111 1111 1111 1111 1111 1111 1011 1111 1111 1111 1111 1111 1111 1111 1111 其結果與 math.floor double 5 2...