剑指offer:面试题15. 二进制中1的个数
题目:二进制中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的个数相关推荐
- 剑指Offer - 面试题15. 二进制中1的个数(位运算)
1. 题目 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数.例如,把 9 表示成二进制是 1001,有 2 位是 1.因此,如果输入 9,则该函数输出 2. 示例 1: 输入:0000 ...
- 剑指offer面试题15. 二进制中1的个数(位运算)
题目描述 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数.例如,把 9 表示成二进制是 1001,有 2 位是 1.因此,如果输入 9,则该函数输出 2. 思路 详见链接 代码 cla ...
- 剑指offer面试题[10]-二进制中1的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 分析: 这是一道很基本的考察二进制和位运算的面试题.思路:先判断证书二进制表示中最右边的一位是不是1.接着再把输入的数字右移 ...
- 【剑指offer-Java版】10二进制中1的个数
二进制中1的个数: 思路一:循环右移给定的数,但是存在负数出现死循环的问题 思路二:声明一个变量flag并初始化为1,然后循环右移flag,循环次数是和给定数的精度也就是位数有关 思路三:用了二进制一 ...
- 面试题15. 二进制中1的个数
请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数.例如,把 9 表示成二进制是 1001,有 2 位是 1.因此,如果输入 9,则该函数输出 2. 示例 1: 输入:0000000000 ...
- 《LeetCode力扣练习》剑指 Offer 15. 二进制中1的个数 Java
<LeetCode力扣练习>剑指 Offer 15. 二进制中1的个数 Java 一.资源 题目: 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ...
- 【LeetCode】剑指 Offer 15. 二进制中1的个数
[LeetCode]剑指 Offer 15. 二进制中1的个数 文章目录 [LeetCode]剑指 Offer 15. 二进制中1的个数 一.逐位判断 二.巧用 n&(n−1) 一.逐位判断 ...
- 剑指 Offer 15. 二进制中1的个数 + 191. 位1的个数(n(n-1)实例)
一.题目:剑指 Offer 15. 二进制中1的个数 请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数.例如,把 9 表示成二进制是 1001,有 2 位是 1.因此, ...
- 剑指 Offer 15. 二进制中1的个数
/*** 剑指 Offer 15. 二进制中1的个数** Java Integer.bitCount 方法 源码*/public class SolutionJZ15 {public int hamm ...
最新文章
- 第二百二十节,jQuery EasyUI,Slider(滑动条)组件
- 自动驾驶之多传感器融合-硬件篇(毫米波雷达)
- wampsever的mysql密码_WampServer修改Mysql密码的步骤
- Django 2.2 LTS 发布,长期支持版来了
- 求一个指定点对的路径上的最大边权或最小边权(转)
- java邮箱设置密送_修改后可以发送附件、抄送、密送的javabean,吐血推荐~(javamail范例)...
- 字节流抽象类 java
- 牛客网在线编程:公共字符
- MIKE水动力笔记3_岸线及水深数据之根据遥感影像绘制岸线的方法
- laravel 下载使用
- nanoCAD Pro 10.0.4447.1969 Build 4520中文免费版
- mysql 查连接数,查看MySQL的连接数
- Opengl中:屏幕坐标到世界坐标(GLFW实现)
- revit常用机电工具,如何实现管线快速翻弯
- 【模电】0014 运放自激振荡和消除(补偿)
- element-ui message 显示重叠问题
- linux 内存耗尽重启,【server故障】linux下JVM内存耗尽故障
- artTemplate模板引擎
- 源码多多-Discuz x2.5 论坛防灌水机制分析和设置方法
- 【Kotlin】Kotlin 教程