思路: 首先,廣泛的思想,確定是先將倆個數轉化爲二進制形式,而後保存到數組中,分別一個個進行比較。這樣能夠,但時間花費較長。至少須要兩個循環操做。因此,個人方法是: int c= a&b; 能夠求出倆個數中相同位置的1的個數。 int d=a|b; 全部有1的位置,也能夠理解爲0位置相同的個數。 而後用機器位數減去相同的,即爲不一樣的。或用下邊的異或的方法 int f=c^d; 不一樣的位置個數 具體代碼以下:數組
int main() { cout<<"test is a example"<<endl; int a=43,b=102; int num1=0,num2=0; int c=a&b; int d=a|b; while(c) { c &=(c-1); num1++; } cout<<num1<<endl; while(d+1) { d |=(d+1); num2++; } cout<<num2<<endl; cout<<"有"<<32-(num1+num2)<<"位須要變化"<<endl; return 0; }