位運算 與 或 異或 反 左移 右移運算子的用途

2021-10-10 19:32:57 字數 1597 閱讀 5411

1.1 清零

與乙個各位都為零的數值想與,結果為零

123&0

// 0

1.2 判斷奇偶
123&1

// 1

122&

1// 0

1.3 取乙個數的指定位

比如取數x = 1010 1110 的低4位,只需要找乙個數y,令y的低四位為1,其餘位為0,即y = 0000 1111

1010

1110

&0000

1111

//0000 1110

比如取數x = 1010 1110 的第3位,只需要找乙個數,令y的第3位為1,其餘位為0,即y = 0000 0100

1010

1110

&0000

0100

// 100

1010

1010

&0000

0100

// 0

4 將二進位制最後乙個1變成0
x = x &

(x -1)

// 101 & (100) = 100

// 110 & (101) = 100

位元數題目

2.1 將乙個資料的某些位置設定為1

比如將數x = 1010 1110 的低四位 設定為 1,只需要另找乙個數y,令y的低4位為1,其餘位為0,即y = 0000 1111

1010

1110

|0000

1111

// 1010 1111

3.1 交換律

3.2 結合律a ^ b ^ c == a ^ (b ^ c)

3.3 對於任何數,都有x ^ x = 0x ^ 0 = x

3.4 自反性a ^ b ^ b = a ^ 0 = a

4 異或運算的用途

4.1 翻轉指定位

比如將數x = 1010 1110 的低4位進行翻轉,只需要另外找乙個數y,令y的低4位為1,其餘位為0,即y = 0000 1111

1010

1110

^0000

1111

// 1010 0001

4.2 與0相異或值不變

取反運算子的優先順序大於 算數運算子、關係運算子、邏輯運算子

5.1 使x的最低為為0

x&~

1// ~1 的值為 1111 1111 1111 1110

將乙個數的各二進位制位全部左移若干位,左邊的二進位制捨棄,右邊補0

若左移時捨棄的高位不包括1,則每左移1位相當於該數乘二

將乙個數的各二進位制位全部右移若干位,右邊的二進位制捨棄,左邊正數補0,負數補1

每右移1位相當於該數除二

左邊不足的位依次補

8.1 整型資料為正數,左邊補0

8.2 整型資料為負數,左邊補1

8.3 整型資料為無符號數,左邊補0

Python位運算 與 或 異或 左移右移

與運算規則 1 1 1 0 1 0 0 0 0以1和5的與運算為例 1的二進位制為 001 5的二進位制為 101 僅最後一位都為1,所以結果為001 1 5 1或運算規則 1 1 1 1 0 1 0 0 0以4和6的或運算為例 4的二進位制為 100 6的二進位制為 110 僅最後一位都為0,所以...

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

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

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

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