二进制相关算法
来源:互联网 发布:yum 尝试其他镜像 编辑:程序博客网 时间:2024/05/18 00:30
1、求整数二进制中1的个数
解析:把一个整数减1,再和原整数做与运算,会把该整数最右边一个1变成0。那么一个整数的二进制表示中有多少个1,就可以进行多少次这样的操作。
#include <stdio.h>int numof1(int num){int count = 0;while(num){++count;num = num&(num-1);}return count;}int main(){int num,count;printf("输入整数:\n");scanf("%d",&num);count = numof1(num);printf("整数二进制中1的个数为:\n%d\n",count);return 0;}
2、判断一个整数是不是2的整数次方。
分析:2的整数次方中只包含一个1,也就只需按照上面那道题的思路判断1个数是不是只有一个即可。
#include <stdio.h>bool is2power(int num){return (num&(num-1))==0;}int main(){int num;bool flag;printf("输入整数:\n");scanf("%d",&num);flag = is2power(num);if(flag)printf("该整数是2的整数次方!\n");elseprintf("该整数不是2的整数次方!\n");return 0;}
3、输入两个整数m、n,计算需要改变m的二进制中的多少位才能得到n。
分析:首先两个整数异或,之后计算异或后二进制1的个数即可。
#include <stdio.h>int numofchange1(int num1, int num2){int count = 0;int num = num1 ^ num2;while(num){++count;num = num&(num-1);}return count;}int main(){int num1,num2,count;printf("输入整数m:\n");scanf("%d",&num1);printf("输入整数n:\n");scanf("%d",&num2);count = numofchange1(num1,num2);printf("m需要改变%d位才能得到n!\n",count);return 0;}
- 二进制相关算法
- 二进制 算法相关的题目
- 二进制算法
- 二进制算法
- 二进制算法
- 二进制相关资料
- 二进制相关智力题
- 二进制相关知识
- IO二进制 相关类
- C 二进制打印相关
- 二进制相关---1
- 二进制的运算相关
- java二进制相关基础
- 十进制转二进制算法
- 高级整数二进制算法
- 二进制指数退避算法
- 子集的二进制算法
- 二进制最大公约数算法
- Android all app界面字体增加背景
- zookeeper使用和原理探究
- ORACLE PLSQL配置
- 使用FFMPEG进行视频截取与合并
- 代理模式 C++ 实现
- 二进制相关算法
- Linux:cannot restore segment prot after reloc:Permission denied
- PHPCMS V9添加内容时JS代码直接显示的解决办法?
- pthread-win32在VC下的配置与使用
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
- typedef void (*sighandler_t)(int);类型说明
- Java Collections Framework(1) Collection Interface
- png图片在CListCtrl中显示
- android设置gps开启