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,則該位...