Java 和 C 中的位運算子

2021-06-16 01:48:43 字數 1728 閱讀 6591

運算子

位運算子是用來對位元組或位元組中的位進行運算的符號,參加位運算的運算元必須是整型常量或變數。通常,我們把要進行位運算的變數說明為 unsigned 型別。c 語言提供了六種運算子。他們是位與(&)、位或(|)、位異(^)、左移(<<)、右移(>>)和取反(~)。這六種運算子的運算規則如下:

位與(&):

兩個相應位上的值全 1,則改位的結果值為 1,否則為0。即:

1&0為 0, 0&1 為 0,0&0為0, 1&1為1

位或(|):

兩個相應位上的值全0,則該位的結果值為0,否則為1.即:

1|0為1,0|1為1,0|0為0,1|1為1

位異(^):

兩個相應位上的值相同,則該位的結果值為0,不相同為1.即:

1^1為0,0^0為0,1^0為1 0^1為1

左移(<<):

是用來將左運算元的各個二進位制位按右運算元給出的值向左移動。運算元移位後,右端出現的空位補零,而移出左端的高位被捨棄。例如:

設 a 的值為十進位制數 15,即二進位制 00001111,則 a << 2 後得 00111100,即十進位制數字60。

右移(>>)

是用來將左運算元的各個二進位制數按右運算元給出的值向右移動。運算元移位後,左端出現的空位補零,而移出右端的低位被捨棄。例如:

設b的值為十進位制數字28,即二進位制數 00011100,則 b >> 2後得 00000111,即十進位制數字7。

取反(~)

是用來將運算元按位取反,即運算元的相應位上的值為1時變換成0,為0時變換成1,即 ~0 為1,~1為0。

通過上面的介紹,現對位運算子的運算規則做一小結。如下:

運算子名稱    

預算規則

&    

位與兩個相應位全 1 為 1,其餘為 0|位或

兩個相應位全 0 為 0,其餘為 1

^位異或

兩個相應位相同為 0,不相同為 1

<<

左移    

把左運算元左移指定的位數

>>

右移把左運算元右移指定的位數~取反

把運算元各位 0 變 1,1 變 0。

下面舉乙個位運算子的應用示例。

例題:

寫乙個程式,將整數 x 的低位元組作為整數 z 的低位元組,整數 y 的低位元組作為整數 z 的高位元組。

步驟:

a. 將整數 x 的低位元組取出,高位元組置零。即

x & 0x00ff

b. 將整數 y 的低位元組移至高位元組,低位元組再置零。即

(y & 0x00ff)<<8

c. 將上面兩者的結果進行合併。即

(x & 0x00ff) | (y & 0x00ff) <<8

程式如下:

main()

執行結果如下:

cd31

java中的位運算子

我記得第一次聽說位運算子好像是從大二的微機原理,那個時候學並不好,後來程式設計好像也沒有用到過,但是最近在複習一些東西的時候,發現這才是最終要的基礎,比起算術運算子高階大氣上檔次多了。下面就對今天覆習的位運算子做一下筆記 按位與。按位或。按位非。按位異或。右位移運算子。無符號右移運算子。關於前面幾個...

java位運算子

按位與運算子 參加運算的兩個資料,按二進位制位進行 與 運算。運算規則 0 0 0 0 1 0 1 0 0 1 1 1 即 兩位同時為 1 結果才為 1 否則為0 例如 3 5 即0000 0011 0000 0101 0000 0001 因此,3 5的值得1。另,負數按補碼形式參加按位與運算。與運...

Java位運算子

今天在學習 hashmap 的時候,發現這麼一段 static final int tablesizefor int cap 方法的作用就是,輸入乙個數,如果該數為2的冪次方,那麼將原數返回回去,如果不是,那麼會返回另乙個數,也會是2的冪次方。看完我就覺得我該好好看看位運算子了。位運算子主要針對二進...