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