题目:二进制中1的个数

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

示例 1:

输入:00000000000000000000000000001011
输出:3
解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。

示例 2:

输入:00000000000000000000000010000000
输出:1
解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'

示例 3:

输入:11111111111111111111111111111101
输出:31
解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。

解题:

n - 1的二进制值一定会把原二进制值右起的第一个1变成0,而这个1右边的所有0都会变成1,再进行按位与运算的话,就会把n二进制中右起第一个1去掉,同时也会把n-1二进制刚刚增加的1也变成0,所以相对n来说,n&n-1就会少了右起第一个1。

所以如果我们如果进行如下运算:

while (n) { n = n & n - 1; }

每一次循环,都会消掉最右边的1,直到所有1都消去,所以只要再弄个变量计数,就能统计n二进制中1的个数。

class Solution {
public:int hammingWeight(uint32_t n) {int cnt = 0;while (n) {cnt++;n = n & (n-1);}return cnt;}
};

剑指offer:面试题15. 二进制中1的个数相关推荐

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

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

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

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

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

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

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

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

  5. 面试题15. 二进制中1的个数

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

  6. 《LeetCode力扣练习》剑指 Offer 15. 二进制中1的个数 Java

    <LeetCode力扣练习>剑指 Offer 15. 二进制中1的个数 Java 一.资源 题目: 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ...

  7. 【LeetCode】剑指 Offer 15. 二进制中1的个数

    [LeetCode]剑指 Offer 15. 二进制中1的个数 文章目录 [LeetCode]剑指 Offer 15. 二进制中1的个数 一.逐位判断 二.巧用 n&(n−1) 一.逐位判断 ...

  8. 剑指 Offer 15. 二进制中1的个数 + 191. 位1的个数(n(n-1)实例)

    一.题目:剑指 Offer 15. 二进制中1的个数 请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数.例如,把 9 表示成二进制是 1001,有 2 位是 1.因此, ...

  9. 剑指 Offer 15. 二进制中1的个数

    /*** 剑指 Offer 15. 二进制中1的个数** Java Integer.bitCount 方法 源码*/public class SolutionJZ15 {public int hamm ...

最新文章

  1. 第二百二十节,jQuery EasyUI,Slider(滑动条)组件
  2. 自动驾驶之多传感器融合-硬件篇(毫米波雷达)
  3. wampsever的mysql密码_WampServer修改Mysql密码的步骤
  4. Django 2.2 LTS 发布,长期支持版来了
  5. 求一个指定点对的路径上的最大边权或最小边权(转)
  6. java邮箱设置密送_修改后可以发送附件、抄送、密送的javabean,吐血推荐~(javamail范例)...
  7. 字节流抽象类 java
  8. 牛客网在线编程:公共字符
  9. MIKE水动力笔记3_岸线及水深数据之根据遥感影像绘制岸线的方法
  10. laravel 下载使用
  11. nanoCAD Pro 10.0.4447.1969 Build 4520中文免费版
  12. mysql 查连接数,查看MySQL的连接数
  13. Opengl中:屏幕坐标到世界坐标(GLFW实现)
  14. revit常用机电工具,如何实现管线快速翻弯
  15. 【模电】0014 运放自激振荡和消除(补偿)
  16. element-ui message 显示重叠问题
  17. linux 内存耗尽重启,【server故障】linux下JVM内存耗尽故障
  18. artTemplate模板引擎
  19. 源码多多-Discuz x2.5 论坛防灌水机制分析和设置方法
  20. 【Kotlin】Kotlin 教程

热门文章

  1. 20190226-利用序列化完成小型记账程序
  2. hbase系列之:独立模式部署hbase
  3. 1.磁盘的数据结构包括那些内容?
  4. Android 支付宝H5 没有回调
  5. MyBatis启动:MapperStatement创建
  6. 2017-2018-1 20155202 《信息安全系统设计基础》第9周学习总结
  7. Redis 配置文件介绍——redis.conf
  8. 机器学习概念 — 线性感知机、线性回归、单个神经元、多层次神经元
  9. 实验三-密码破解技术
  10. 构建自己的PHP框架--构建缓存组件(1)