java基礎知識之位運算子

2021-09-01 06:18:36 字數 1575 閱讀 1229

位運算子除按位與和按位或運算子外,其他只能用於處理整數的運算元,。位運算是完全針對位方面的操作。整型資料在記憶體中以二進位制的形式表示,如int型變數7的二進位制表示是00000000 00000000 00000000 00000111。

左邊最高位是符號位,最高位是0表示整數,若為1則表示負數,負數採用補碼表示,如-8的二進位制表示為 11111111 11111111 11111111 11111000 。這樣就可以對整數資料進行按位運算

1,「按位與」運算

「按位與「運算的運算子為」&「,為雙目運算子,」按位與「運算的運算法則是:如果兩個整形資料a,b對應位都是1,則結果位才是1,否則是0,如果兩個運算元的精度不同,則結果的精度與精度高的運算元相同。

eg:    此處只寫後八位

000 001 01   -->a

000 001 10   -->b

000 001  00  -->result

2,「按位或」運算

"按位或「運算的運算子為「1」,為雙目運算子。「按位或」運算的運算法則是:如果兩個運算元對應位都是0,則結果位才是0,否則是1。如果兩個運算元的精度不同,則結果的精度與精度高的運算元相同。

eg:     000 001 01   -->a

000 001 10   -->b

000 001 11 -->result

3,」按位取反「運算

「按位取反「運算也稱「按位非「運算,運算子為」~「,為單目運算子,」按位取反「就是將運算元二進位制中的1修改為0,0修改為1。

eg:     000 001 01   -->a

111 110 10 -->result

4,「按位異或」運算

「按位異或「運算的運算子為"^",為雙目運算子。「按位異或」運算的運算法則是:當兩個運算元的二進位制表示相同(同為1或者同為0)時,結果為0,否則結果為1。如果兩個運算元的精度不同,則結果的精度與精度高的運算元相同。

eg:     000 001 01   -->a

000 001 10   -->b

000 000 11 -->result

5,移位操作

除上述運算子外,還可以對資料按二進位制位進行位移操作。位移操作運算子有以下三種:

<<: 左移

>>: 右移

>>>: 無符號右移

左移:就是將左邊對運算元在記憶體中對二進位制資料左移右邊運算元指定的位數,左邊移空的部分補0。

右移:如果最高位是0,左移空的位就填入0,如果最高位是1,右移空的位就填1

無符號右移,無論最高位是1還是0,左側被移空的高位都填0

移位運算子適用的資料型別有:byte,short,int,long,char

移位可以實現整數除以或者乘以2^n的效果,例如y<<2 與y*4的結果相同;y>>1的結果與y/2的結果相同,總之,乙個數左移n位,就是這個數乘以2^n;乙個數右移n位就是將蒸熟除以2^n。

java基礎知識之運算子

運算子 加 正好 連線 減 符號 a b 等價於 a a b 等號表示賦值。運算過程從右向左,把右邊的結果賦值給左邊的變數。程式執行的順序,從上到下,依次執行。而要是使用合理向上引用。1 或者 1的意思。在變數之前,先自身加減然後參與運算。在變數之後,先參與運算然後自身加減。邏輯與 邏輯或 短路與 ...

Java基礎之位運算子

位運算子主要針對二進位制,它包括了 與 非 或 異或 1 與運算子 符號 其使用規律如下 如果不是二進位制數字要先轉換成二進位制再對兩個數進行比較。運算元中比較的位數如果兩個都為1,結果才為1,否則結果為0,案例 public static void main string args 2 或運算子 ...

java基礎之位運算子

處理整形型別時,可以直接對組成整型數值的各個位完成操作,這意味著可以使用掩碼技術得到整數中的各個位。位運算子包括 and or xor not 這些運算子按位模式處理。例如,如果n是乙個整數變數,而且用二進位制表示的n從右邊數第四位為1,則 int x n 0b1000 0b1000 會反回1,否則...