java java中的位運算

2021-07-24 22:49:11 字數 2632 閱讀 9771



位運算包括:&(與)、

|(或)、

^(異或)、

~(取反)、

>>(右移)

、<<(左移)

、>>>(無符號右移

)按位與 &

兩位全為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...