用c语言实现,两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
2015-10-16 20:44
465 查看
方法一: #include <stdio.h> int bit_dif(int a, int b) { int i=0; int ret=0; int num=0; ret=a^b; for(i=0; i<32; i++) { if(ret&1==1) { num++; } ret=ret>>1; } return num; } int main() { int count=0; int num1=0; int num2=0; printf("请输入两个数,用空格隔开\n"); scanf("%d%d",&num1, &num2); count=bit_dif(num1, num2); printf("%d\n",count); return 0; } 方法二:(优化) #include <stdio.h> int bit_dif(int a, int b) { int i=0; int ret=0; int num=0; ret=a^b; while(ret) { num++; ret=ret&(ret-1); } return num; } int main() { int count=0; int num1=0; int num2=0; printf("请输入两个数,用空格隔开\n"); scanf("%d%d",&num1, &num2); count=bit_dif(num1, num2); printf("%d\n",count); return 0; }
相关文章推荐
- 约瑟夫环形算法 用c语言实现
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
- 【C语言】【笔试题】两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
- C++从屏幕输入一行以空格分割的数字,存入整型数组
- Qt调用VC++生成的动态链接库
- C++设计模式 之 “单一职责”模式:Decorator、Bridge
- C++primer学习:拷贝控制(2)
- c语言学习笔记(14)指针基础
- 快速排序C++实现
- 关于C++中的模板和using namespace std 的冲突
- 设计模式学习笔记--原型模式
- C++ main函数传参
- 剑指offer第十六题【合并两个排序的链表】c++实现
- C++ 数组的指针,指针的数组, 数组引用
- C语言相关知识
- visual studio如何修改c++项目的.net framework框架版本
- A + B Is Overflow
- 归并排序/合并排序c++实现
- 初学者 C++学习笔记:字符串指针###
- c语言调用c++类成员函数的方法