首先是6個二進位制的運算子:
運算子 含義 描述
& 按位與 如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0
| 按位或 兩個相應的二進位制位中只要有乙個為1,該位的結果值為1
^ 按位異或 若參加運算的兩個二進位制位值相同則為0,否則為1
~ 取反 ~是一元運算子,用來對乙個二進位制數按位取反,即將0變1,將1變0
<< 左移 用來將乙個數的各二進位制位全部左移n位,右補0
>> 右移 將乙個數的各二進位制位右移n位,移到右端的低位被捨棄,對於無符號數,高位補0
求下面函式的返回值 -- 統計1的個數
-------------------------------------
int func(int x)
return countx;
} 假定x = 9999
10011100001111
答案: 8
思路: 將x轉化為2進製,看含有的1的個數。
注:每執行一次x = x&(x-1),會將x用二進位制表示時最右邊的乙個1變為0,因為x-1將會將該位(x用二進位制表示時最右邊的乙個1)變為0。
判斷乙個數(x)是否是2的n次方
-------------------------------------
#include
int func(int x)
int main()
注: (1)如果乙個數是2的n次方,那麼這個數用二進位制表示時其最高位為1,其餘位為0。
(2)== 優先順序高於 &
下面這個**是輸出兩個數之間能用2^n+。。。2^m。表示的個數。
#include#include#includeusing namespace std;
int f[50][50];
int cal(int x,int k) //計算出方案數
return 0;
}
二進位制 二進位制起源
現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...
二進位制壓縮 演算法
二進位制壓縮 在程式設計時遇到每個資料只有兩種狀態,且 dfs 或者 bfs 時遍歷時間複雜度高時,可以採用二進位制壓縮資料,尤其是二維陣列。1.二進位制壓縮乙個二位陣列 例如 正常儲存資料回使用二位陣列,1,0,即 0100 0000 0000 0100如果我們採用二進位制壓縮為乙個 int 型別...
二進位制列舉演算法
列舉演算法相信大家都不陌生,有一種特殊的列舉演算法 二進位制列舉 為什麼要使用二進位制列舉演算法?因為有的時候很難用迴圈把所有的情況都表示出來,二進位制就可以很輕鬆的解決這個問題。話不多說,看題目吧。1.話說大詩人李白,一生好飲。幸好他從不開車。一天,他提著酒壺,從家裡出來,酒壺中有酒兩斗。他邊走邊...