题目描述:

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。比如输入9,9的二进制表示是1001,1的个数是2,所以输出2。

这有一个重要结论:一个数与该数减一的结果进行与运算,会把该数右边(低位)第一个1变为0,而该位左边保持不变(高位)。可以举一个简单的例子进行证明:比如1100(对应十进制是12),减去1之后的结果是1011(也就是十进制的11),两个数进行与运算之后,我们发现最后的结果是1000(对应十进制的8,当然这个8与后面没有关系,可以略过)。这样我们每进行一次的与运算就消去一个1,这样消到最后肯定是0了,所以我们可以在代码中以这个为循环的终止条件。

基于以上分析,可以写出如下的代码(已被牛客AC):

package com.rhwayfun.offer;public class NumberOf1 {public int numberOf1(int n) {int sum = 0;while(n != 0){sum++;n = n & (n - 1);}return sum;}public static void main(String[] args) {int count = new NumberOf1().numberOf1(9);System.out.println(count);}
}

剑指offer系列之十:二进制中1的个数相关推荐

  1. 剑指Offer - 面试题15. 二进制中1的个数(位运算)

    1. 题目 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数.例如,把 9 表示成二进制是 1001,有 2 位是 1.因此,如果输入 9,则该函数输出 2. 示例 1: 输入:0000 ...

  2. 剑指offer面试题[10]-二进制中1的个数

    题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 分析: 这是一道很基本的考察二进制和位运算的面试题.思路:先判断证书二进制表示中最右边的一位是不是1.接着再把输入的数字右移 ...

  3. 剑指offer面试题15. 二进制中1的个数(位运算)

    题目描述 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数.例如,把 9 表示成二进制是 1001,有 2 位是 1.因此,如果输入 9,则该函数输出 2. 思路 详见链接 代码 cla ...

  4. 【剑指offer-Java版】10二进制中1的个数

    二进制中1的个数: 思路一:循环右移给定的数,但是存在负数出现死循环的问题 思路二:声明一个变量flag并初始化为1,然后循环右移flag,循环次数是和给定数的精度也就是位数有关 思路三:用了二进制一 ...

  5. 剑指offer系列之六十:序列化二叉树

    题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 首先得理解题目的意思,序列化就是返回一个带有#和逗号的字符串.反序列化就是根据带有#和逗号的字符串返回一棵二叉树.比如对于二叉树 1/ \2 ...

  6. 牛客网(剑指offer) 第二十二题 从上往下打印二叉树

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. <?php/*class TreeNode{var $val;var $left = NULL;var $right = NUL ...

  7. 牛客网(剑指offer) 第十二题 数值的整数次方

    //题目描述 //给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. <?phpfunction Power($base, $expo ...

  8. 【剑指 offer】(十)—— 二进制形式 1 的个数

    可能引起死循环的解法 int numOf1(int n) {int cnt = 0;while (n){if (n & 1)++cnt;n >>= 1;}return cnt; } ...

  9. leetcode 打印_剑指 Offer 总结 - leetcode 剑指offer系列

    剑指 Offer 系列完结撒花!! 本篇文章是对整个系列的精华总结, 对系列的每篇文章进行了分类, 并用一句话概括每道题的思路, 方便大家理解和记忆, 当然也包含原文完整链接供大家参考 总的来说, 写 ...

最新文章

  1. mysql存储过程详解[转]
  2. go mod依赖离线安装_Go语言go mod包依赖管理工具使用详解
  3. Error:Connection timed out: connect
  4. React Native使用指南-使用链接库
  5. note.js和mysql的优劣_nginx与Node.js的优缺点是什么?
  6. 域控 只能访问特定网址_开发人员需要了解的特定于域的语言
  7. Linux下Shell脚本命令行参数:getopt、getopts用法
  8. selenium 实现循环点击_webdriver处理循环点击
  9. 小爱同学音色定制服务器响应失败,小爱同学自定义音色
  10. 程序员自我学习自我培训指南
  11. html中两个块之间有空隙,css标签之间引发空隙问题解决办法
  12. Linux 多点电容触摸屏
  13. 大数据和java就业前景_java大数据开发的就业前景及未来趋势
  14. 1822 - Failed to add the foreign key constraint. Missing index for constraint ‘fk_tno_course‘ in the
  15. while语句和do...while语句
  16. SQL Server 2008 创建标量值函数、存储过程
  17. 做个表白页面需要掌握哪些英语单词?
  18. 【Tomcat】tomcat logs 目录下各日志文件的含义
  19. laya 阿拉丁自定义统计
  20. Metal每日分享,虚假颜色混合滤镜效果

热门文章

  1. BERT模型从训练到部署全流程
  2. Python filter() 函数
  3. 鹅厂2020暑期实习第二次一面
  4. 使用第三方库(Senparc)完成小程序支付 - z
  5. 硬件——STM32,GPIO篇
  6. PHP整数取余返回负数解决办法
  7. 使用Azure portal Create Virtual Machine
  8. jad 反编译java
  9. zset中的score_每天五分钟,成就redis大神之Zset数据类型
  10. python字典程序题_python字典练习题