码迷,mamicode.com
首页 > 其他好文 > 详细

两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同

时间:2019-02-11 10:33:09      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:多少   code   个数   lib   col   span   lse   表达   font   

思路:利用&用算加右移的方法来提取二进制中的每一位数,然后进行比较,查看是否相同。

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 int main()
 5 {
 6     //i=1999 -> 011111001111
 7     //j=2299 -> 100011111011
 8     int i = 0, j = 0;
 9     int a = 0, b = 0, num = 0;
10     //a与b分别是i与j二进制中的最后一位的数字,num 为位(bit)不同的个数
11     printf("请输入您要比较的两个数字:\n");
12     scanf("%d %d", &i, &j);
13     while (i != 0 || j != 0)
14     {
15         //这里查看整数i的二进制的最后一位并赋值给a
16         //每次查看结束就右移一位改变最后一位的数值
17         if ((i & 1) == 1)
18         {
19             a = 1;
20             i = i >> 1;
21         }
22         else
23         {
24             a = 0;
25             i = i >> 1;
26         }
27         //这里查看整数j的二进制的最后一位并赋值给b
28         //每次查看结束就右移一位改变最后一位的数值
29         if ((j & 1) == 1)
30         {
31             b = 1;
32             j = j >> 1;
33         }
34         else
35         {
36             b = 0;
37             j = j >> 1;
38         }
39         //最后比较a和b的值,不一样则++num
40         if (a != b)
41         {
42             ++num;
43         }
44 
45     }
46     printf("%d",num);
47     
48     return 0;
49 
50 }

 

两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同

标签:多少   code   个数   lib   col   span   lse   表达   font   

原文地址:https://www.cnblogs.com/cuckoo-/p/10360956.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!