C 求兩個數的二進位制有幾位是不相同的

2021-09-12 23:30:50 字數 550 閱讀 9930

解法:

首先把兩位數異或,得到的結果,通過自身跟自身-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即可 採...