博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
两个整数二进制表达中,有多少个位(bit)不同
阅读量:4031 次
发布时间:2019-05-24

本文共 869 字,大约阅读时间需要 2 分钟。

编程实现:

两个int32位)整数mn的二进制表达中,有多少个位(bit)不同? 

输入例子:1999 2299

输出例子:7

1、利用移位运算,将32位二进制数保存在数组中,然后比较两个数组中各个元素是否相同。

代码如下:

#include
#include
int main(){ int m,n,arr1[32],arr2[32],i=0,count=0; scanf("%d%d",&m,&n);        for(i=0;i<32;i++) { arr1[i]=(m>>i)&1;//通过移位和与运算,将二进制数保存在数组中        } for(i=0;i<32;i++) { arr2[i]=(n>>i)&1; } for(i=0;i<32;i++) { if(arr1[i]!=arr2[i])//比较两个数组中相应元素是否相等 count++; } printf("count=%d",count); system("pause"); return 0;}

2、直接进行异或(二进制按位异或),然后求取“1”的个数。

#include
#include
int main(){ int num1,num2,num; int count=0; scanf("%d%d",&num1,&num2); num=num1^num2;//用异或法方便解,例如:num1为1011和num2为0001,则num为1010,        while(num)       {              count++;           num=num&(num-1);//依次取掉后面的1。(num-1)&num为(1010-0001)&1001=1000    } printf("count=%d\n",count); system("pause"); return 0;}

本文出自 “” 博客,请务必保留此出处

转载地址:http://sjlbi.baihongyu.com/

你可能感兴趣的文章
Oracle 物化视图
查看>>
PHP那点小事--三元运算符
查看>>
解决国内NPM安装依赖速度慢问题
查看>>
Brackets安装及常用插件安装
查看>>
在CentOS 7系统上搭建LNMP 环境
查看>>
Centos 7(Linux)环境下安装PHP(编译添加)相应动态扩展模块so(以openssl.so为例)
查看>>
fastcgi_param 详解
查看>>
Nginx配置文件(nginx.conf)配置详解
查看>>
标记一下
查看>>
一个ahk小函数, 实现版本号的比较
查看>>
IP报文格式学习笔记
查看>>
autohotkey快捷键显示隐藏文件和文件扩展名
查看>>
Linux中的进程
查看>>
学习python(1)——环境与常识
查看>>
学习设计模式(3)——单例模式和类的成员函数中的静态变量的作用域
查看>>
深度学习库安装与使用
查看>>
keras句子分类 keras_demo_for_sentence_classification (simplified version)
查看>>
MySQL for Windows 解压缩版配置安装
查看>>
MySQL必知必会(读书笔记)
查看>>
MySQL必知必会(读书笔记二)
查看>>