题目描述

输入一个整数,输出该数二进制表示中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. 安卓系统底层C语言算法之测试参数是几个long型的算法
  2. 大学python用什么教材-清华大学出版社-图书详情-《Python大学教程》
  3. mvn 汇编_2020年积极向上的班级口号汇编71条
  4. [Leedcode][JAVA][第236题][二叉树的公共祖先][后序遍历][BFS]
  5. ubuntu创建php文件,ubuntu系统创建桌面快捷方式的方法
  6. Extjs中三种不同的数据提交方式
  7. FixedThreadPool 使用方法测试
  8. CSS边距---盒子模型
  9. 新浪下拉菜单(js原生版本)
  10. [转载] Python: ord()函数
  11. pso-svm 算法实现(1):python DEAP
  12. python的图导入origin_利用Origin软件做X射线倒易空间图(RSM)的办法
  13. 泊松分布以及相关分布的知识整理
  14. Bug系列路径规划算法原理介绍(三)——Tangent BUG算法
  15. 如何给 SAP UI5 SmartField 添加 Value Help 功能试读版
  16. 【逍遥模拟器】注册微信提示环境异常怎么解决?
  17. android 播放多个音频文件,android – 如何同时播放多个ogg或mp3 ..?
  18. python import logging
  19. C++ 背包问题——多重背包
  20. 关于免费发短信网站背后的猫腻

热门文章

  1. 施耐德APC 7921/7921B入门IP配置,(串口设置IP)
  2. 戴戴戴师兄《系统认识数据分析》——笔记整理0
  3. 深度强化学习中的泛化
  4. 经济周期的各个阶段——Business Cycle Phases
  5. UnicodeEncodeError: 'gbk' codec can't encode character '\U0001f914' in position ....
  6. Linux教程:基本命令学习
  7. 使用蒙特卡洛模拟进行var计算
  8. 浅析alsa声卡驱动snd_pcm_start函数-将音频数据真实的发送到外部音频接口硬件
  9. 3.Abp vNext 地磅无人值守 vue 前端搭建
  10. 源代码电影涉及的计算机思想,从“计算机-进程-线程”的角度理解电影《源代码》...