兩數不同才是1。
通常用於對二進位制的特定一位進行取反,可以對兩個數進行交換。
常用性質:a^b^b=a,即b^b=0,可以用作判斷乙個數出現的次數,0^a=a,並且可以用作字串的比較。
異或也叫半加運算,其運算法則相當於 不帶進製的二進位制加法
一數異或同乙個數兩次,則結果還是原數,即 (a ^ b) ^ b = a
0異或任何數,結果都等於那個數,即 0 ^ a = a
同為1才是1。
通常用於二進位制位操作,如乙個數&1的結果就是取二進位制的最末尾,可以用來判斷整數奇偶。
左移 (<<) 乘2
右移(>>)除2
用1或0來判斷取或者不取
find different
題目翻譯
description
給出乙個奇數n(1<=n<=10000001)。
給你乙個含有n個數的陣列:a[1],a[2],a[3] … a[n],他們都是正整數。
有n/2個數字出現兩次,只有1個數字出現一次。
現在你需要指出只出現一次的那個數字。
input
有多個測試用例,以eof結束。
第一行是乙個整數n。
第二行有n個整數a[1],a[2]…a[n]。
#include
using
namespace std;
int n;
intmain()
cout<}return0;
}
和為k–二進位制列舉
#include
#include
using
namespace std;
int i,j,n,k,s,a[21]
;int
main()
if(s==k)}if
(flag==0)
printf
("no\n");
}}
陳老師加油-二進位制列舉
#include
#include
using
namespace std;
intmain()
}if(k1==
10&&k2==
5&&tmp==0)
ans++;}
cout
}
紙牌遊戲-二進位制-搜尋
#include
#include
using
namespace std;
intmain()
if(s==k)
ans++;}
printf
("%d\n"
,ans);}
return0;
}
趣味解題
#include
#include
using
namespace std;
intmain()
else p=p*wa[j];}
if(cnt==x)
ans=ans+p;
}printf
("%.4lf\n"
,ans);}
return0;
}
簡單的二進位制列舉
核心思想:利用二進位制的1,和0代表選擇與不選擇。將所有情況羅列開,並一位一位與各種情況進行對比,例如:
for
(i=0
;i<(1
<;i++
)//n是指集合中的元素的個數,(1<
else
(i&(
1<)//代表不選擇;}if
()//加入題目所給出的條件;
}
三、用異或比較不同(計算機中異或的操作是對於整型的操作,double不可以)
//此題是找出所有數中數字只出現一次的數
#include
using
namespace std;
intmain()
cout << ans << endl;
}return0;
}
例題:nefu teacher li
#include
using
namespace std;
int n, tot=0;
string start, follow;
intmain()
cout<<
"scenario #"
<<
++tot<}return0;
}
二進位制和位運算
逢2進1的計數規則 電子裝置設計成處理2進製,其成本最優。所有程式語言都是一種人和計算機之間的翻譯工具,人的陣列語言翻譯成二進位製給計算機讀取,然後把計算機的二進位制資料翻譯 類的語言呈現出來。16進製制用於縮寫 簡寫 2進製,將2進製從後向前每4位數轉換為1位16進製制。補碼 將固定位數的2進製數...
二進位制位運算
與運算,6 3 2 或運算 6 3 7 異或運算 6 3 5 反碼 6 7 左移 3 2 12 3 2 2 12 右移 3 1 1 3 2 1 無符號右移 3 1 1 3 2 1 按位與,當兩位同時為1時才為1如 1 1 1 1 0 0 0 1 0 6 3相當於 0110 0011 0010 2 按...
二進位制位運算
一 按位與 位全為1,結果才為1 0 0 0 0 1 0 1 0 0 1 1 1 特殊用法 清零。如果想將乙個單元清零,就是使其全部二進位制位為0,只要與乙個各位都為零的數值相與,結果為零 取乙個數中的指定位。如x 10101110要取x的低4位,用x 00001111 00001110即可 二 按...