位運算應用

2021-07-27 00:21:26 字數 694 閱讀 2282

1. 判斷乙個數的奇偶性。(x&1) 【101 & 1 = 1】

2. 判斷x是否是2的正整數冪。(x&(x-1)) 【100 & 011 = 0】

3. 取出乙個數的某些二進位制位。

3.1.(x&(1 << (d-1)))【10101 & (1 << (3-1)) = 00100】取第d位

3.2.(x&((1 << d)-1))【10101 & ((1 << 3)-1) = 00101】取最後d位, x對2^d取模

4. 取出乙個數的最後乙個二進位制位1。(x & -x)【10100 & (01100) = 4】最後乙個二進位制位是第三位

/*******狀態變化

得到乙個數的所有少乙個二進位制位1的子集。

for( i = x ; i > 0 ; i -= (i & -i) )

aim = x & ~(i & -1);

得到乙個數的所有二進位制子集。

for (i = x ; i > 0 ; i = (i - 1) & x)

aim = i;

*******/

1. 將乙個數的某些二進位制位設為1。(x|(1 << (d-1)))

1. 將乙個數的某些二進位制位取反。(x^(1 << (d-1)))

2. 不使用中間變數交換兩個數:a=a^b;b=a^b;a=a^b; 【可以理解:a = a^(b^b)  && b = (a^a)^b】

位運算應用

位運算 針對整型 字元型,計算機會將它轉換為二進位制運算 1 按位與 x y 對應位都為1時才為1 用途 取 保留1個數的某位 對應掩碼的對應位為1 其餘各位置1 2 按位或 x y 對應位都為0才為0,否則為1 用途 將1個數的某些位置1,其餘不變 3 按位異或 x y 對應位相同為0,不同為1 ...

位運算應用

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

位運算應用

負數以其正值的補碼形式表示 1 任何乙個數和0異或是它的本身,和自身異或為0 a 0 a a a 0 利用上述性質,可以用來計算2個數的交換。大家應該知道,在計算機裡,兩個數互相交換,需要定義乙個中間的變數來參與交換。如 int tmp int a 10 int b 20 tmp a a b b t...