位運算的認識與運算

2021-08-07 09:48:38 字數 1220 閱讀 9615

1、&   與運算 

其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1,否則為0。

參與運算的數以補碼方式出現。(正數的補碼是其本身)

例:9&5=?

9的二進位制位為0000 1001  &

5的二進位制位為0000 0101  結果為0000 0001, 轉化為十進位制就為1

所以9 & 5 = 1

按位與運算通常用來對某些位清0或保留某些位。例如把a 的高八位清 0 ,保留低八位,可作a&255運算(255 的二進位制數為0000000011111111)。

2、|  或運算

其功能是參與運算的兩數各對應的二進位相或。

只要對應的兩個二進位有乙個為1時,結果位就為1。參與運算的兩個數均以補碼出現。

例:6|8=?

6的二進位制位為0000 0110  |

8的二進位制位為0000 1000  結果為0000 1110,轉化為十進位制為14

所以6 | 8 = 14

3、^ 異或運算

其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1。參與運算數仍以補碼出現.

例如: 4 ^ 9 =?

0000  0100  ^  0000 1001=0000 1101,結果為13

4、~ 取反運算

其功能是對參與運算的數的各二進位按位求反 

例如 :~9 (~0000 0000 0000 1001)取反之後為(1111 1111 1111 0110)

5、<< 左移運算  相當於 * 2

左移運算子「<<」是雙目運算子。其功能把「<< 」左邊的運算數的各二進位全部左移若干位,由「<<」右邊的數指定移動的位數,高位丟棄,低位補0。例如:

a<<4

指把a的各二進位向左移動4位。如a=00000011(十進位制3),左移4位後為00110000(十進位制48)。

6、>> 右移運算 正數高位補0。

右移運算子「>>」是雙目運算子。其功能是把「>>」左邊的運算數的各二進位全部右移若干位,「>>」右邊的數指定移動的位數。例如:

設  a=15,

a>>2

表示把000001111右移為00000011(十進位制3)。

注意:對於有符號數,在右移時,符號位將隨同移動。當為正數時,最高位補0,而為負數時,符號位為1,

最高位是補0或是補1 取決於編譯系統的規定。turbo c和很多系統規定為補1。

進製運算與位運算

不可以在二進位制表示形式中使用負號 5 0000 0101 5 1111 1011 取反加一 既是補碼 負數二進位制的計算方法是把整數二進位制按位求反 再加一 就是補碼 每個有符號資料型別中首位為 1 其它位都是 0 的二進位制表示這個資料型別的最小數 採用剛才的計算方法同樣可以根據負數的二進位制補...

位運算與移位運算

位運算指的是進行二進位制位的運算 位運算子說明 取反 按位與 按位或 按位異或 左移運算子,左移一位等於乘二 右移運算子,右移一位相當於除2取商 按位取反 按位與 按位或 按位異或的 執行操作 int a 7 0111 int b 8 1000 system.out.println a b 按位與結...

位運算子與位運算

位運算是對二進位制位的操作,它應用於整形資料,把整形資料看成固定的二進位制序列,然後對二進位制序列進行位運算 按位與運算 按位與運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 否則為0。參與運算的數以補碼方式出現。例c a b a 1010...