加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 04:25:14 所属栏目:大数据 来源:网络整理
导读:思路:利用用算加右移的方法来提取二进制中的每一位数,然后进行比较,查看是否相同。 1 #includestdio.h 2 #includestdlib.h 3 4 int main() 5 { 6 // i=1999 - 022222001111 7 // j=2299 - 100022222011 8 int i = 0 ,j = 0 ; 9 int a = 0 ,b = 0 ,num = 0

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

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 int main()  5 {  6     //i=1999 -> 022222001111  7     //j=2299 -> 100022222011
 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 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读