整数A和B的二进制表示有多少位不同

View Code
 1 #include <iostream>

 2 #include <cstdio>

 3 

 4 using namespace std;

 5 

 6 int main()

 7 {

 8     int a, b;

 9     int p1, p2;

10     int rlt;

11 

12     while(scanf("%d%d",&a,&b)!=EOF)

13     {

14         rlt=0;

15         while(a!=0 && b!=0)

16         {

17             p1=a-(a&(a-1));  //p1为第一次出现一的位置

18             p2=b-(b&(b-1));

19             if(p1==p2)

20             {

21                 a&=(a-1);

22                 b&=(b-1);

23             }

24             else

25             {

26                 rlt++;

27                 if(p1<p2)

28                 {

29                     a&=(a-1);

30                     p1=a-(a&(a-1));

31                 }

32                 else

33                 {

34                     b&=(b-1);

35                     p2=b-(b&(b-1));

36                 }

37             }

38         }

39 

40         while(a!=0)

41         {

42             a&=(a-1);

43             rlt++;

44         }

45         while(b!=0)

46         {

47             b&=(b-1);

48             rlt++;

49         }

50         printf("%d\n",rlt);

51     }

52 

53     return 0;

54 }

你可能感兴趣的:(二进制)