求兩個數二進制中不同位的個數
- 描述
- 思路
- 代碼實作
- 知識回顧
描述
??編程實作:兩個int(32位)整數m和n的二進制表達中,有多少個位(bit)不同,
輸入例子:1999 2299
輸出例子:7
思路
??1.先將 m 和 n 進行按位異或,此時m和n相同的二進制位元位清零,不同的二進制位元位為1;
??2.統計異或完成后結果(temp)的二進制位元位中有多少個1即可(采用按位與),
代碼實作
#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)
int diff_bit(int m, int n){
int tmp = m^n;
int count = 0;
while (tmp)
{
tmp = tmp&(tmp - 1);
count++;
}
return count;
}
int main()
{
int m, n;
printf("請輸入兩個數字: ");
scanf("%d %d", &m, &n);
int ret = diff_bit(m, n);
printf("ret=%d\n", ret);
system("pause");
return 0;
}
知識回顧
& —> 按位與(有0出0)
| —>按位或(有1出1)
^ —>按位異或(相同為0,相異為1)
??ok ,文章就先到這里了,希望這篇文章能夠幫助到你對指標的認識,若有不足或者不正之處,希望諒解并歡迎批評指正!
??如果本文章對你有幫助,哪怕一點點,那就請點一個贊唄,謝謝~~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/205406.html
標籤:其他
上一篇:自學白帽黑客的第一年總結
