整数的二进制表示中 1 的个数
2019独角兽企业重金招聘Python工程师标准>>>
题目:整数的二进制表示中 1 的个数
要求:
输入一个整数,求该整数的二进制表达中有多少个 1。
例如输入 10,由于其二进制表示为 1010,有两个 1,因此输出 2。
分析:
解法一是普通处理方式,通过除二余二统计1的个数;
解法二与解法一类似,通过向右位移依次处理,每次与1按位与统计1的个数
解法三比较奇妙,每次将数字的最后一位处理成0,统计处理的次数,进而统计1的个数
代码实现(GCC编译通过):
#include "stdio.h"
#include "stdlib.h"int count1(int x);
int count2(int x);
int count3(int x);int main(void)
{int x;printf("输入一个数:\n");setbuf(stdin,NULL);scanf("%d",&x);printf("%d转二进制中1的个数是:",x);printf("\n解法一:%d",count1(x));printf("\n解法二:%d",count2(x));printf("\n解法三:%d",count3(x));printf("\n");return 0;
}//除二、余二依次统计每位
int count1(int x)
{int c=0;while(x){if(x%2==1)c++;x/=2;}return c;
}//向右移位,与1按位与统计每位
int count2(int x)
{int c=0;while(x){c+=x & 0x1;x>>=1;}return c;
}//每次将最后一个1处理成0,统计处理次数
int count3(int x)
{int c=0;while(x){x&=(x-1);c++;}return c;
}
参考资料:
《编程之美》 电子工业出版社
转载于:https://my.oschina.net/u/1470003/blog/265002
整数的二进制表示中 1 的个数相关推荐
- 算法--微软面试:整数的二进制表示中1的个数(Java实现)
Q题目 整数的二进制表示中1的个数 输入一个整数,求该整数的二进制表达中有多少个1. 例如,输入10,由于其二进制表示为1010,有两个1,因此输出2. 这是一道很基本的考查位运算的面试题. Answ ...
- 输出一个整数的二进制表示中1的个数
引言 在一个非零整数的二进制表示中,至少有一位是1.如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,若这个1的后面还有数字0,则这些数字0都会变成1,其余所有位不变. 举例如下:二进制数 ...
- 100题_22 整数的二进制表示中1的个数
输入一个整数,求该整数的二进制表达中有多少个1.例如输入10,由于其二进制表示为1010,有两个1,因此输出2. 这个题非常简单,考的是位运算,我们每次向左移1位,判断最后一位是不是1就可以了.不多说 ...
- JAVA实现输入一个整数,输出该数二进制表示中1的个数(《剑指offer》)
题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 这个题目有个比较有意思并且被公认的解法,我就先贴答案吧: public class Solution {public int ...
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
转自http://my.oschina.net/ithaibo/blog/142655 题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 题目引自http://ac.jobdu ...
- 《剑指offer》-统计整数二进制表示中1的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 直观思路就是把二进制表示从右往左统计1的个数.直接想到移位操作来迭代处理.坑点在于负数的移位操作会填充1.有人贴出了逻辑移位 ...
- 二进制表示中 1 的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 需要注意的是: 右移运算符是将一个二进制数按指定移动的位数向右移动. 移动过程中,正数最高位补0,负数最高位补1,无符号数最 ...
- 题库练习5(句子逆序、字符串排序、int型二进制表示中1的个数、购物单)
1. 句子逆序 将一个英文语句以单词为单位逆序排放.例如"I am a boy",逆序排放后为"boy a am I".所有单词之间用一个空格隔开,语句中除了英 ...
- 计算数值二进制表达式中1的个数
--------------------------------------------- -- 时间:2019-03-21 -- 创建人:Ruo_Xiao -- 邮箱:xclsoftware@163 ...
最新文章
- 【实用】Angular中如何实现类似Vuex的全局变量状态变化功能?
- CIO能够对我们的社会起到什么作用?
- 2021-02-07 接口测试工具-Postman使用详解
- c语言程序设计橙皮,橙皮_中药词典C_中医中药网
- shell 死循环if判断_Shell的条件判断
- python3 正则表达式 嵌套表格_在Python中将嵌套结构与正则表达式匹配
- python 杀死子进程_Python:当父异常终止时,如何杀死子进程?
- 中文字符频率统计python_python统计字符串出现最多的字母及其出现次数
- [poj 1364]King[差分约束详解(续篇)][超级源点][SPFA][Bellman-Ford]
- mac版小达人点读包怎么安装_小达人点读笔扩容实战:16G变128G
- Raft -【go一致性算法】
- 端口状态 LISTENING、ESTABLISHED、TIME_WAIT、FIN_WAIT_2、CLOSE_WAIT、CLOSE_WAIT
- UI 自动化框架对比2
- 从宏杉合作伙伴大会看本土存储厂商的“逆袭”
- CorelDRAW2023全新版功能及下载安装教程
- 2008年12月12号,星期五晴。为人父,却不能尽父责,为人夫,却不能尽夫责。这种痛楚什么时候才能结束。
- matlab将z域变为s域,时域、S域、Z域转换
- 资源管理器清楚WPS网盘、百度网盘方法
- 文献检索、整理、归纳
- springmvc视图解析器详解
热门文章
- java io读取文件_java io读取文件操作代码实例
- dhcp服务器设置无线,无线网dhcp服务器设置
- 绿米开关如何重置_开个灯还带音效?跟我学简单改装智能开关,保证按上瘾!...
- 在a标签中添加点击事件
- sunplus 8202v iop源代码阅读笔记——2
- 加密芯片——RSA算法特点与应用注意事项
- VB为MSHFlexGrid添加表格编辑功能
- 最大学术出版商妥协!与挪威46所机构签协议,90%出版物免费阅读
- Mask R-CNN官方实现“又”来了!基于PyTorch,训练速度是原来2倍
- OpenAI新研究:通过非监督学习提升NLP任务表现