位運算(取反 補碼 左移 右移 與 或)

2021-10-08 15:50:57 字數 1282 閱讀 6376

4.右移(>>)

5.與6.或

7.異或^

8.位運算的應用

ending

1) 將參加運算的兩個數轉換為二進位制,若預設為int則有32位,這裡預設為short型16位

10 (0000 0000 0000 1010)

2) 左移兩位,右補0(0000 0000 0010 1000)40

1) 先求出-10以補碼的形式表示為 10取反+1(1111 1111 1111 0101)+1 = 1111 1111 11110110

2) 將-10以補碼的形式表示左移兩位1111 1111 1101 1000

3) 將補碼算出來的結果轉換為原碼 取反+1 1000 0000 0010 0111+1 = 1000 0000 0010 1000 轉為十進位制為-40

左移一位就是原值乘2的1次方,左移兩位的就是原值乘2的2次方

1) 將參加運算的兩個數轉換為二進位制,若預設為int則有32位 10 (0000 0000 0000 1010)

2) 右移兩位,將各二進位制位全部向右移動,對於正數相當於在左邊補0 (0000 0000 0000 0010) 2

1) 先求出-10以補碼的形式表示為 10取反+1(1111 1111 1111 0101)+1 = 1111 1111 1111 0110

2) 將-10以補碼的形式表示右移兩位1111 1111 1111 1101 左邊補1

3) 轉換為原碼符號位依然為1(負數) 1000 0000 0000 0011 -3

右移一位的結果就是原值除2的1次方 結果向下取整

1|0 = 1,1|1=1,0|0=0

相同值為0,不同值為1,異或支援交換律和結合律

不引用第三個編碼交換a,b的值。

a = a ^ b (1)

b = a ^ b (2)

a = a ^ b (3)

將(1)代入(2)中得

b = (a ^ b) ^ b = a ^ ( b ^ b) = a ^ 0 = a

將(2)代入(3)

同理 a = (a ^ b) ^ a= b ^ 0=b

找出一組整型資料,這一組資料中只有乙個數隻出現了一次,其他的都出現了兩次。

假設一組整型資料為 a b c a c,將這一組資料全部異或得 a ^ b ^ c ^ a ^ c 使用結合律得 b^ (a ^ a) ^ (c ^ c) = b ^ 0 ^0 = b

有錯誤歡迎指出,謝謝

位運算(與 或 異或 取反 右移 左移)

1 按位與 對兩個數進行操作,然後返回乙個新的數,這個數的每個位都需要兩個輸入數的同一位都為1時才為1,如下圖 a b 結果為 12,二進位制為 0000 1100 2 按位或 比較兩個數,然後返回乙個新的數,這個數的每一位設定1的條件是兩個輸入數的同一位都不為0 即任意乙個為1,或都為1 如下圖 ...

C語言位運算子 與 或 異或 取反 左移和右移

位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位的...

C語言位運算子 與 或 異或 取反 左移和右移

語言位運算子 與 或 異或 取反 左移和右移 位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。c語言提供的位運算子列表 運算子 含義 描述 按...