位運算總結 之 與

2021-09-11 19:19:40 字數 1107 閱讀 7938

1、判斷奇偶

乙個數二進位制的末位數是1,則該數是奇數,末位數是0,則該數是偶數。因此可以用 a&1 == 0來判斷。

如下例:

#include using namespace std;

int main()

} cout << endl;

return 0;

}

2、消除尾一

ⅰ、消除最後出現的1:x & (x - 1)

如:用 o(1) 時間檢測整數 n 是否是 2 的冪次。

因為2的冪次滿足① > 0,②二進位制表示中只有乙個1。因此,**如下:

#include using namespace std;

int main()

else

return 0;

}

再乙個例子:計算在乙個 32 位的整數的二進位製表式中有多少個 1。

x&(x-1)消去x的最後出現的1個1,因此不斷做x = x&(x-1)就可以得到,x的二進位制表示式中有多少個1。**如下:

#include using namespace std;

int main()

cout << cnt << endl;

return 0;

}

再如:如果要將整數a轉換為b,需要改變多少個bit位?

這是對上面問題的拓展,也會用到異或的知識。如果我們將a^b,相同位為0,相異位為1,接下來的就很容易想到了 —— 統計a^b後1的個數!**如下~:

#include using namespace std;

int main()

cout << endl;

return 0;

}

ⅱ、消除最末所有位的1:x & (x + 1)

如:(藍橋杯2016省賽a5題):題目與題解見該鏈結

就先總結到這裡啦~,之後遇到更有趣的繼續總結!

位運算總結與應用

一 求下面函式的返回值 int func x return count 功能 將x轉化為2進製,看含有的1的個數。每執行一次x x x 1 會將x用二進位制表示時最右邊的乙個1變為0,因為x 1將會將該位 x用二進位制表示時最右邊的乙個1 變為0。二 下面函式的作用 bool func int x ...

位運算總結之GGBond版

按位與運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1,否則為0 參與運算的數以補碼方式出現。例如 3 2可寫算式如下 00000011 3的二進位制補碼 00000010 2的二進位制補碼 00000010 2的二進位制補碼 可見3 2 2...

位運算總結

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