【c语言】多种方法:将十进制数转化成二进制数,计算其中1的个数
来源:互联网 发布:凯文老师的淘宝店 编辑:程序博客网 时间:2024/04/29 20:21
以下是我学到的三种方法,如果大家还有更好的方法,可以讨论交流。
首先,我们得知道十进制怎样转化成二进制,如下图。
得到10的二进制数为1010
那么我们会发现,10%2是判断二进制数的最后一位是0还是1,判断完成后向右移一位即10/2得到5,接着5%2判断二进制数的倒数第二位是0还是1,判断完成后向右移一位即5/2得2,重复这个过程,直到0/2结束。最终我们得到了10的二进制数1010.
根据上述思想,我们可以得到一个最初步的算法。
while(data>0){if(data%2==1){ count++; }data = data/2;}
但是我们也可以再简便一些,方法如下:
while(data>0){if(data & 0x1)//与最低位相与,判断是0还是1{ count++; } data = data>>1; //向右移1位}
可是上述的两种方法通常适合二进制数的1比较集中出现在低位的情况,例如:101101
但是如果是1100000这样的数呢,它会在前面的0上浪费许多时间,效率就不高了。
所以,为了提高效率,我们引入下面这种方法:
“按位与”方法就是将最低位的1借位,得到的数值与原值相与,重复此过程,直至结果为0.
也就是说在这种方法中,只要数值中还存在1,就会重复这个过程。
代码如下:
while(data){data = data & (data-1);count++;}
2 0
- 【c语言】多种方法:将十进制数转化成二进制数,计算其中1的个数
- 用c语言实现输入一个十进制数,计算其转换为二进制数后其中包含1的个数
- 十进制数转化为二进制数中1的个数
- php面试题一道(计算一个十进制数转二进制后其中‘1’的个数)
- c语言将十进制数转换成二进制数
- C语言 两种方法求一个十进制无符号数的二进制数中1的个数
- C语言--计算二进制数中1的个数(&)
- 将十进制数转化为二进制数
- 将十进制数转化为二进制数
- 求一个十进制数转化成二进制后bit为0或1的个数
- 计算一个数二进制中1 的个数(多种方法)
- C++如何求一个十进制数转化为二进制数之后1的个数
- 十进制数含有的二进制1个数
- 0015求十进制数转化成二进制数后1的个数(程序员面试宝典上例题)
- 把整形数转化为二进制数输出并计算其中一的个数 怎么把负数转化为二进制数?
- 将十进制数转化为二进制
- 用C语言编写一个程序将输入的十进制数转化成16进制?
- 第二周实验报告1:编写递归函数将十进制数转化成二进制数
- SpringMVC浅谈
- 预处理-分节2(条件编译)
- Servlet与Struts2的区别
- Android怎么实现Linearlayout的垂直分割线?
- Spring AOP 拦截器的基本实现
- 【c语言】多种方法:将十进制数转化成二进制数,计算其中1的个数
- 跟我一起学python(四),python的模块
- -webkit-line-clamp 实现限制文字显示多行,多余的用...代替
- HDU5000 区间dp
- Shader山下(八)片段着色器
- TCP/IP协议簇
- Spring AOP 实现主从读写分离
- 进程和线程
- MFC串口通讯