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

Posted The Ocean

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同相关的知识,希望对你有一定的参考价值。

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

 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)不同的主要内容,如果未能解决你的问题,请参考以下文章

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

两个数二进制中不同位的个数

小米2015笔试编程题

[小米]懂二进制

获得两个整形二进制表达位数不同的数量

#yyds干货盘点# 名企真题专题:懂二进制