解法:
首先把兩位數異或,得到的結果,通過自身跟自身-1相與,直到等於0為止
舉個例子:
1跟21的二進位制數是0001
2的二進位制數是0010
兩位數異或是:0011 這個數對應的十進位制為3
然後 3跟(3-1)相與:3跟2相與
0011
0010
————
0010
現在相與完結果為2,2再跟2-1相與
0010
0001
————
0000
現在為0了。執行了兩次相與。所以1跟2的二進位制數有兩位是不相同的。
**相與的原理是:**每次乙個數跟自身減一相與完,二進位制數的結尾的1會置0
於是可以用c**來實現這個過程
#includeint hammingdistance(int x, int y)
return count;
}int main()
檢視兩個int數的二進位制有幾位不同
題目 檢視兩個int 32位 數的二進位制有幾位不同。分析 要理解該題目的意思,就要明白c語言中關於位的一些操作符。1 按位與操作符,從低位到高位對兩個數的每位進行與操作,如1001 1101 1001,都為1則取1 2 按位或操作符,有乙個是1就取1 3 異或,不同則取1 4 非操作符,用來對乙個...
計算兩個整數的二進位制中有幾個二進位制不同
演算法思想 這裡用到位運算,給定兩個初值 1 定義乙個計數器count在後面用來計算不同的二進位制的個數 2 定義乙個變數i,i從0開始,迴圈32次,因為32位二進位制,採用乙個for迴圈 3 a和b的二進位制形式每次右移一次,右移出的那個二進位制與1相與,如果結果相同則說明兩個二進位制相同,反之相...
求兩個數二進位制中不同位的個數,它來了!!
程式設計實現 兩個int 32位 整數m和n的二進位制表達中,有多少個位 bit 不同。輸入例子 1999 2299 輸出例子 7 1.先將 m 和 n 進行按位異或,此時m和n相同的二進位制位元位清零,不同的二進位制位元位為1 2.統計異或完成後結果 temp 的二進位制位元位中有多少個1即可 採...