二进制表示中 1 的个数
题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
需要注意的是:
右移运算符是将一个二进制数按指定移动的位数向右移动。
移动过程中,正数最高位补0,负数最高位补1,无符号数最高位补0。
因此:
右移整数,遇到负数的测试序列会导致陷入死循环:
if ((n & 1) == 1) {count++;} n = n >> 1;
考虑左移 1,按位与测试序列,直至 1 从右端移出
while (flag != 0) {if ((n & flag) != 0) {count++;}flag = flag << 1; }
一种巧妙的解法,考虑 一个整数的二进制表示 减一 的操作,
一个二进制数1100,减去1后,得到1011,
减1的结果相当于把从最右边的一个1开始的所有位都取反。这时候再把原来的整数和减去1之后的结果做与运算,从原来整数最右边一个1那一位开始所有位都会变成0。如1100&1011=1000.
因此,把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0., 0仍保持0,那么一个整数的二进制有多少个1,就可以进行多少次减 1 的操作
public int NumberOf1(int n) {
int count = 0;
while(n!= 0){
count++;
n = n & (n - 1);
}
return count;
}
二进制表示中 1 的个数相关推荐
- JAVA实现输入一个整数,输出该数二进制表示中1的个数(《剑指offer》)
题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 这个题目有个比较有意思并且被公认的解法,我就先贴答案吧: public class Solution {public int ...
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
转自http://my.oschina.net/ithaibo/blog/142655 题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 题目引自http://ac.jobdu ...
- 算法--微软面试:整数的二进制表示中1的个数(Java实现)
Q题目 整数的二进制表示中1的个数 输入一个整数,求该整数的二进制表达中有多少个1. 例如,输入10,由于其二进制表示为1010,有两个1,因此输出2. 这是一道很基本的考查位运算的面试题. Answ ...
- 题库练习5(句子逆序、字符串排序、int型二进制表示中1的个数、购物单)
1. 句子逆序 将一个英文语句以单词为单位逆序排放.例如"I am a boy",逆序排放后为"boy a am I".所有单词之间用一个空格隔开,语句中除了英 ...
- 计算数值二进制表达式中1的个数
--------------------------------------------- -- 时间:2019-03-21 -- 创建人:Ruo_Xiao -- 邮箱:xclsoftware@163 ...
- BZOJ3209(n的二进制表示中1的个数的乘积)
题目:花神的数论题 设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,求 sum(1)至sum(N) 的乘积. #include <iostream> #inc ...
- 整数的二进制表示中 1 的个数
2019独角兽企业重金招聘Python工程师标准>>> 题目:整数的二进制表示中 1 的个数 要求: 输入一个整数,求该整数的二进制表达中有多少个 1. 例如输入 10,由于其二进制 ...
- 《剑指offer》-统计整数二进制表示中1的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 直观思路就是把二进制表示从右往左统计1的个数.直接想到移位操作来迭代处理.坑点在于负数的移位操作会填充1.有人贴出了逻辑移位 ...
- 转:对于一个字节(8bit)的变量,求其二进制表示中“1”的个数
转:http://toutiao.com/a4280977370/ [解法一] 可以举一个八位的二进制例子来进行分析.对于二进制操作,我们知道,除以一个 2,原来的数字将会减少一个0.如果除的过程中有 ...
最新文章
- Vue入门三、过滤器filter
- 《The Elements of Statistical Learning》 chp3 Linear Models for Regression
- 格式工厂软件处理视频
- python中使用ZADD方法报错AttributeError: 'int' object has no attribute 'items'
- 用U盘或移动硬盘安装Windows7 (超简单制作Win7安装U盘方法)
- 一张图学会python 3_一张图学会Python?想啥呢?!
- Windows版Mysql5.6.11的安装与配置
- 中国首个开源基金会来了
- document-scanner:一个基于OpenCV的文档扫描器
- 如何遍历JTree的每一个节点
- 系统集成项目经理申报
- [转] 在天堂与地狱之间——清华浪子梦断中关村
- 分析listen状态
- python pandas 条件选择
- win10录屏功能怎么打开,详细图文教学,轻松学会
- Unity发布UWP,Hololens调用外部dll识别二维码,获得中文拼音简码
- 中英文说明书丨 AbFluor 488 细胞凋亡检测试剂盒
- 千万不要用Lightly去写代码!!!!踩大坑!!!!数据全没!!一个月都恢复不了!!!!
- Hutool包下使用PinyinUtil获取汉字的拼音报错cn.hutool.extra.pinyin.PinyinException: No pinyin jar found! Please ...
- Mac下paragon插件卸载不完整的解决办法