题目描述

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

需要注意的是:
右移运算符是将一个二进制数按指定移动的位数向右移动。
移动过程中,正数最高位补0,负数最高位补1,无符号数最高位补0。

因此:

  1. 右移整数,遇到负数的测试序列会导致陷入死循环:

  2. if ((n & 1) == 1) {count++;}
    n = n >> 1;
    
  3. 考虑左移 1,按位与测试序列,直至 1 从右端移出

  4. while (flag != 0) {if ((n & flag) != 0) {count++;}flag = flag << 1;
    }
    
  5. 一种巧妙的解法,考虑 一个整数的二进制表示 减一 的操作,
    一个二进制数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 的个数相关推荐

  1. JAVA实现输入一个整数,输出该数二进制表示中1的个数(《剑指offer》)

    题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 这个题目有个比较有意思并且被公认的解法,我就先贴答案吧: public class Solution {public int ...

  2. 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示

    转自http://my.oschina.net/ithaibo/blog/142655 题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 题目引自http://ac.jobdu ...

  3. 算法--微软面试:整数的二进制表示中1的个数(Java实现)

    Q题目 整数的二进制表示中1的个数 输入一个整数,求该整数的二进制表达中有多少个1. 例如,输入10,由于其二进制表示为1010,有两个1,因此输出2. 这是一道很基本的考查位运算的面试题. Answ ...

  4. 题库练习5(句子逆序、字符串排序、int型二进制表示中1的个数、购物单)

    1. 句子逆序 将一个英文语句以单词为单位逆序排放.例如"I am a boy",逆序排放后为"boy a am I".所有单词之间用一个空格隔开,语句中除了英 ...

  5. 计算数值二进制表达式中1的个数

    --------------------------------------------- -- 时间:2019-03-21 -- 创建人:Ruo_Xiao -- 邮箱:xclsoftware@163 ...

  6. BZOJ3209(n的二进制表示中1的个数的乘积)

    题目:花神的数论题 设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,求 sum(1)至sum(N) 的乘积. #include <iostream> #inc ...

  7. 整数的二进制表示中 1 的个数

    2019独角兽企业重金招聘Python工程师标准>>> 题目:整数的二进制表示中 1 的个数 要求: 输入一个整数,求该整数的二进制表达中有多少个 1. 例如输入 10,由于其二进制 ...

  8. 《剑指offer》-统计整数二进制表示中1的个数

    题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 直观思路就是把二进制表示从右往左统计1的个数.直接想到移位操作来迭代处理.坑点在于负数的移位操作会填充1.有人贴出了逻辑移位 ...

  9. 转:对于一个字节(8bit)的变量,求其二进制表示中“1”的个数

    转:http://toutiao.com/a4280977370/ [解法一] 可以举一个八位的二进制例子来进行分析.对于二进制操作,我们知道,除以一个 2,原来的数字将会减少一个0.如果除的过程中有 ...

最新文章

  1. Vue入门三、过滤器filter
  2. 《The Elements of Statistical Learning》 chp3 Linear Models for Regression
  3. 格式工厂软件处理视频
  4. python中使用ZADD方法报错AttributeError: 'int' object has no attribute 'items'
  5. 用U盘或移动硬盘安装Windows7 (超简单制作Win7安装U盘方法)
  6. 一张图学会python 3_一张图学会Python?想啥呢?!
  7. Windows版Mysql5.6.11的安装与配置
  8. 中国首个开源基金会来了
  9. document-scanner:一个基于OpenCV的文档扫描器
  10. 如何遍历JTree的每一个节点
  11. 系统集成项目经理申报
  12. [转] 在天堂与地狱之间——清华浪子梦断中关村
  13. 分析listen状态
  14. python pandas 条件选择
  15. win10录屏功能怎么打开,详细图文教学,轻松学会
  16. Unity发布UWP,Hololens调用外部dll识别二维码,获得中文拼音简码
  17. 中英文说明书丨 AbFluor 488 细胞凋亡检测试剂盒
  18. 千万不要用Lightly去写代码!!!!踩大坑!!!!数据全没!!一个月都恢复不了!!!!
  19. Hutool包下使用PinyinUtil获取汉字的拼音报错cn.hutool.extra.pinyin.PinyinException: No pinyin jar found! Please ...
  20. Mac下paragon插件卸载不完整的解决办法

热门文章

  1. Java实现万年历/日历
  2. 地理信息系统(ArcGIS)在水文水资源、水环境中的实践
  3. 良精企业通用建站系统漏洞总汇
  4. CTF 音频隐写 大总结
  5. 麦田怪圈集合欣赏!(高清晰图)
  6. mysql粘贴数据_粘贴mysql数据库
  7. 【Cylinder3D论文解读及代码略解】
  8. 三种方法教你清空剪贴板
  9. FlashCom学习例子: 在线拍大头照(项目使用Flash8+VS2005)
  10. 巧用Session Manager还原Firefox丢失会话