位運算若干應用

2021-06-25 13:20:26 字數 790 閱讀 9787

//把右起第乙個0變成1    | (100101111->100111111)    | x or (x+1)

//把右邊連續的0變成1 | (11011000->11011111) | x or (x-1)

//取右邊連續的1 | (100101111->1111) | (x xor (x+1)) shr 1

//取右起的第乙個1 | (100101000->1000) | x and (-x)

#include #include #include /*a:x &= x-1;*/

//usage1:

bool is_pow2(int x) //判斷x是否2的n次方,x>0,x=1,2,4,……8 return 1;

//usage2:

int count1(int x)//計算數number的二進位制中包含1的個數,x>0

return co;

}//usage3:

void enumerate_subset(int x) //x>=0

while (y!=x); //處理完0後,會有-1&x=x;

}/* */

/*b:列舉x的所有大小為k的子集*/

void enumerate_subset_ofsize_k(int k,int n)

}/*c:列舉不含相鄰元素的集合*/

void enumerate_subset_of_noconsecutive(int n)

}

位運算應用

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

位運算應用

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取模 ...

位運算應用

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