以下是我学到的三种方法,如果大家还有更好的方法,可以讨论交流。

首先,我们得知道十进制怎样转化成二进制,如下图。

得到10的二进制数为1010

那么我们会发现,10%2是判断二进制数的最后一位是0还是1,判断完成后向右移一位即10/2得到5,接着5%2判断二进制数的倒数第二位是0还是1,判断完成后向右移一位即5/2得2,重复这个过程,直到0/2结束。最终我们得到了10的二进制数1010.

根据上述思想,我们可以得到一个最初步的算法。

  1. while(data>0)

  2. {

  3. if(data%2==1)

  4. { count++; }

  5. data = data/2;

  6. }

但是我们也可以再简便一些,方法如下:

  1. while(data>0)

  2. {

  3. if(data & 0x1) //与最低位相与,判断是0还是1

  4. { count++; }

  5. data = data>>1; //向右移1位

  6. }

可是上述的两种方法通常适合二进制数的1比较集中出现在低位的情况,例如:101101

但是如果是1100000这样的数呢,它会在前面的0上浪费许多时间,效率就不高了。

所以,为了提高效率,我们引入下面这种方法:

“按位与”方法就是将最低位的1借位,得到的数值与原值相与,重复此过程,直至结果为0.

也就是说在这种方法中,只要数值中还存在1,就会重复这个过程。

代码如下:

  1. while(data)

  2. {

  3. data = data & (data-1);

  4. count++;

  5. }

将十进制数转化成二进制数,计算其中1的个数相关推荐

  1. C语言算法之将十进制数转换成二进制数

    导语:在C语言中没有将其他进制的数直接输出为二进制数的工具或方法,输出为八进制数可以用%o,输出为十六进制可以用%x,输出为二进制就要我们自行解决了.下面给大家讲述一下如何编程实现将十进制数转换成二进 ...

  2. c++第二周任务一*(1‐1)编写递归函数将十进制数转换成二进制数输出。

    /任务一 /*(1‐1)编写递归函数将十进制数转换成二进制数输出. * 算法说明: */ #include <iostream> using namespace std; void d2b ...

  3. 将十进制数转换成二进制数(C语言)

    C语言--将十进制数转换成二进制数 方法:除 2 取余,逆序排列 原理:用 2 整除十进制整数,可以得到一个商和余数:再用 2 去除商,又会得到一个商和余数,如此进行,直到商为小于 1 时为止,然后把 ...

  4. 将一个十进制数转化为二进制数,统计二进制数中1的个数

    进制转化,统计数字个数: 任务拆解 进制转换 统计数字个数 函数代码 测试结果 任务拆解: 提示:首先分析并分解问题 1. 进制转换 2. 统计二进制数中的"1"的个数 进制转换: ...

  5. java实现十进制数转换成二进制数

    十进制数转换成二进制 import java.util.Scanner; public class Textwile { public static void main(String[] args) ...

  6. 【小工具类】将一个十进制数转化成二进制/四进制/八进制/16进制

    先直接上完整代码: public class Test {public static void main(String[] args) {int num = 100;System.out.printl ...

  7. 用python将十进制数转换成二进制数_python中的数据结构-将十进制数转换为二进制数...

    二进制表示法在计算机科学中很重要,计算机中存储的所有值都以一串二进制数字,即0和1的形式存在. 如果无法在通用表示形式和二进制数字之间来回转换,我们将需要以非常奇怪的方式与计算机进行交互. 十进制的数 ...

  8. 【数制转换】-十进制数转换成二进制数

    第一部分:整数转换   逐次除2取余法 用2逐次去除待转换的十进制整数,直至商为0时停止:每次所得的余数即为二进制数码,先得到的余数在低位,后得到的余数排在高位. 例子1: 将83转换成二进制数(逐次 ...

  9. 几种将十进制数转化成为二进制数的方法

    def fun():num = int(input('请输入一个十进制的整数:'))# 1.bin()print(num, '的二进制数为:', bin(num))print(str(num) + ' ...

最新文章

  1. 【C++】C++11的enum class enum struct和enum
  2. Python--日志模块
  3. jenkins部署net core初探
  4. java二维对象数组存入文件_关于Java:将2D数组保存到磁盘文件
  5. 网络优化404页面没用吗?对于SEO会造成什么影响?
  6. DL之Perceptron:Perceptron感知器(感知机/多层感知机/人工神经元)的简介、原理、案例应用(相关配图)之详细攻略
  7. 实战总结:我是怎么从0到1做后台业务系统的?
  8. MyBatis——动态SQL语句——if标签和where标签复合使用
  9. go zap去除程序名称_适用于Zip,Zap和Zoom游戏的Python程序
  10. 入门 | 一文看懂卷积神经网络
  11. luogu P2216 [HAOI2007]理想的正方形 递推+ST表
  12. python中类的参数怎么传_如何将整个类作为参数传递给另一个类的方法
  13. iPhone官方资料链接
  14. Alta发布高速MIL-STD-1553 ARINC429模块-USB3.0
  15. QQ通信原理及QQ是怎么穿透内网进行通信的?
  16. 2021年春季 PAT乙级
  17. 算法讲解 -- 莫队算法
  18. Android面试资料整理
  19. .NET Core2.0 WebApi 接收模型对象参数为Null
  20. 物联网智能家居项目总结(全)

热门文章

  1. 研究能力培养的阶梯: 盐趣一对一科研项目
  2. 基于HIP6601的MOS的半桥电路测试
  3. 第十六届全国大学生智能汽车竞赛 英飞凌特供芯片支持计划TC364TC377
  4. linux版视频转换软件,居家旅行必备的Linux视频转换工具
  5. 计算机教师资格证报考科目,还在纠结报考教师资格证该选哪个科目呢?看完这篇,你不再迷茫...
  6. 鸿蒙系统怎么支持安卓应用,鸿蒙系统支持安卓软件吗-鸿蒙系统支持安卓应用吗...
  7. pipe 双管道 简易实现代码
  8. mysql 数据文件压缩,压缩MySQL数据文件的妙招
  9. java中各种vo举例_了解JAVA中的POJO,Entity,PO,VO,DTO,DM包括代码举例展示
  10. Windows10完美安装VMTK(血管建模工具包)