输出一个数的二进制序列中1的个数(三种方法)
由于这个数有可能是负数,负数在计算机中以补码的方式存储,要求负数的补码中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 的三种算法 ——Java篇
求一个数的二进制中有多少了 1 的三种算法 --Java篇 文章目录 求一个数的二进制中有多少了 1 的三种算法 --Java篇 算法一:通过取模 % 运算就取出每一比特位数值,再判断 思路: 代码: ...
- mysql添加临时索引_mysql 中添加索引的三种方法
在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...
- mysql 中添加索引的三种方法
在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...
- centos 卸载软件_一篇看懂!详解-Linux系统中安装软件的三种方法
Linux系统中安装软件的三种方法 注:本文主要以CentOS为例介绍常用的安装方式,其他版本linux在文章底部 Linux系统中怎么安装软件,首先说一下应用程序与系统命令的区别: 1.文件位置 系 ...
- excel添加列下拉框票价_在Excel中制作下拉列表的三种方法
下拉列表在Excel中的用途十分广泛.在Excel中制作下拉列表可以通过数据有效性.使用窗体控件和VBA控件工具箱中的组合框来制作.下面用一个具体的例子来进行说明(在文章结尾处可下载xls格式的示例文 ...
- 在JavaScript中重复字符串的三种方法
In this article, I'll explain how to solve freeCodeCamp's "Repeat a string repeat a string" ...
- 在JavaScript中反转字符串的三种方法
This article is based on Free Code Camp Basic Algorithm Scripting "Reverse a String" 本文基于F ...
- c++语言定义排序函数,关于C++中定义比较函数的三种方法小结
C++编程优与Pascal的原因之一是C++中存在STL(标准模板库).STL存在很多有用的方法. C++模板库中的许多方法都需要相关参数有序,例如Sort().显然,如果你想对一个集合进行排序,你必 ...
- java 终止方法_Java中终止线程的三种方法
Java中终止线程的三种方法 Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit 这些终止线程运行的方法已经 ...
最新文章
- 在Windows上编译UEFI SDK 2018/OVMF的方法
- Go语言int类型绑定方法
- python限定方法参数类型、返回值类型、变量类型等
- String 对象内存分配策略
- 牛客多校3 - Operation Love(几何+叉积确定三点顺逆)
- exxi6.7如何传文件到win7_比QQ直传快100倍!它让PC、安卓、iPhone光速互传文件
- 【Python自动化运维之路Day6】
- 在自定义HttpHandler中使用Session
- 全国大学生电子设计竞赛 控制类赛题分析
- WorkNC编程软件配套英格索尔高速铣刀帮助奥迪加工
- COSMIC度量知识整理
- python爬取微博话题下面的帖子并存入excel文件
- 计算机硬件资源可,计算机硬件资源,Computer hardware resource,音标,读音,翻译,英文例句,英语词典...
- 计算机网络(三十一)万维网WWW介绍
- Oracle导入dmp文件闪退处理方案
- 乐观构思、悲观计划、乐观实行
- [CVE-2021-1732] win32k内核提权漏洞分析
- 【赠书福利】掘金爆火小册同名《Spring Boot源码解读与原理剖析》正式出书了!...
- Mysql 性能优化神器Explain详解
- 阿里云 mac ssh .pem免密登陆
热门文章
- python中argument函数_PythonStudy——函数的参数 Function argument
- oracle olap报告,10g部署oracle olap组件
- 2 数据源配置_如何在程序运行中动态切换数据源?架构师必读秘笈
- 大整数乘法c语言数组,很大的数相乘怎么办?
- 华为畅享10s值得买吗_华为畅享10 Plus值不值得买?首批购买用户评价出炉
- php四种标量,php的标量数据类型和复合数据类型,php四种标量
- 七桥问题c语言程序数据结构,数据结构与算法学习——图论
- ubuntu 报错E: Unable To Locate Package Software-properties-common
- spring注解工具类AnnotatedElementUtils和AnnotationUtils
- 操作系统页面置换算法(opt,lru,fifo,clock)实现