由于这个数有可能是负数,负数在计算机中以补码的方式存储,要求负数的补码中1的个数依然可以正确输出,方法如下:

1、定义这个数的变量类型为无符号整型(unsigned int)

代码为

include<stdio.h>
int count_one_bits(unsigned value)
{
int count=0;
while(value)
{
   if(value%2==1)
   {count++;
   }
   value=value/2;
 }
return count;
}
int main()
{
unsigned int value;
int count;
scanf("%d",&value);
count=count_one_bits(value);
printf("count=%d\n",count);
return 0;
}

2、定义为整型变量用“按位与”(&)的和“右移”(>>)实现。

#include<stdio.h>
int count_one_bits(int value)
{
int count=0;
int i=32;
while(i)
{
if(value&1==1)     
{                  
count++;
}
value=value>>1;
i--;
}
return count;
}
int main()
{
int value;
int count=0;
scanf("%d",&value);
count=count_one_bits(value);
printf("count=%d\n",count);
return 0;
}
3、继续优化

int count_one_bits(int value)
{
int count=0;
while(value)
{
count++;
value=value&(value-1);           
}
return count;
}
int main()
{
int value;
int count=0;
scanf("%d",&value);
count=count_one_bits(value);
printf("count=%d\n",count);
return 0;
}

转载于:https://blog.51cto.com/haipi/1704641

输出一个数的二进制序列中1的个数(三种方法)相关推荐

  1. 求一个数的二进制中有多少了 1 的三种算法 ——Java篇

    求一个数的二进制中有多少了 1 的三种算法 --Java篇 文章目录 求一个数的二进制中有多少了 1 的三种算法 --Java篇 算法一:通过取模 % 运算就取出每一比特位数值,再判断 思路: 代码: ...

  2. mysql添加临时索引_mysql 中添加索引的三种方法

    在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...

  3. mysql 中添加索引的三种方法

    在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...

  4. centos 卸载软件_一篇看懂!详解-Linux系统中安装软件的三种方法

    Linux系统中安装软件的三种方法 注:本文主要以CentOS为例介绍常用的安装方式,其他版本linux在文章底部 Linux系统中怎么安装软件,首先说一下应用程序与系统命令的区别: 1.文件位置 系 ...

  5. excel添加列下拉框票价_在Excel中制作下拉列表的三种方法

    下拉列表在Excel中的用途十分广泛.在Excel中制作下拉列表可以通过数据有效性.使用窗体控件和VBA控件工具箱中的组合框来制作.下面用一个具体的例子来进行说明(在文章结尾处可下载xls格式的示例文 ...

  6. 在JavaScript中重复字符串的三种方法

    In this article, I'll explain how to solve freeCodeCamp's "Repeat a string repeat a string" ...

  7. 在JavaScript中反转字符串的三种方法

    This article is based on Free Code Camp Basic Algorithm Scripting "Reverse a String" 本文基于F ...

  8. c++语言定义排序函数,关于C++中定义比较函数的三种方法小结

    C++编程优与Pascal的原因之一是C++中存在STL(标准模板库).STL存在很多有用的方法. C++模板库中的许多方法都需要相关参数有序,例如Sort().显然,如果你想对一个集合进行排序,你必 ...

  9. java 终止方法_Java中终止线程的三种方法

    Java中终止线程的三种方法 Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit 这些终止线程运行的方法已经 ...

最新文章

  1. 在Windows上编译UEFI SDK 2018/OVMF的方法
  2. Go语言int类型绑定方法
  3. python限定方法参数类型、返回值类型、变量类型等
  4. String 对象内存分配策略
  5. 牛客多校3 - Operation Love(几何+叉积确定三点顺逆)
  6. exxi6.7如何传文件到win7_比QQ直传快100倍!它让PC、安卓、iPhone光速互传文件
  7. 【Python自动化运维之路Day6】
  8. 在自定义HttpHandler中使用Session
  9. 全国大学生电子设计竞赛 控制类赛题分析
  10. WorkNC编程软件配套英格索尔高速铣刀帮助奥迪加工
  11. COSMIC度量知识整理
  12. python爬取微博话题下面的帖子并存入excel文件
  13. 计算机硬件资源可,计算机硬件资源,Computer hardware resource,音标,读音,翻译,英文例句,英语词典...
  14. 计算机网络(三十一)万维网WWW介绍
  15. Oracle导入dmp文件闪退处理方案
  16. 乐观构思、悲观计划、乐观实行
  17. [CVE-2021-1732] win32k内核提权漏洞分析
  18. 【赠书福利】掘金爆火小册同名《Spring Boot源码解读与原理剖析》正式出书了!...
  19. Mysql 性能优化神器Explain详解
  20. 阿里云 mac ssh .pem免密登陆

热门文章

  1. python中argument函数_PythonStudy——函数的参数 Function argument
  2. oracle olap报告,10g部署oracle olap组件
  3. 2 数据源配置_如何在程序运行中动态切换数据源?架构师必读秘笈
  4. 大整数乘法c语言数组,很大的数相乘怎么办?
  5. 华为畅享10s值得买吗_华为畅享10 Plus值不值得买?首批购买用户评价出炉
  6. php四种标量,php的标量数据类型和复合数据类型,php四种标量
  7. 七桥问题c语言程序数据结构,数据结构与算法学习——图论
  8. ubuntu 报错E: Unable To Locate Package Software-properties-common
  9. spring注解工具类AnnotatedElementUtils和AnnotationUtils
  10. 操作系统页面置换算法(opt,lru,fifo,clock)实现