如题:

平常开发过程中,遇到求数的每位数字的时候,通常做法是将这个逐位右移,本题目计算整数的二进制中1的个数,通过右移的方式,能够解决部分问题,但是,这里有个坑,如果整数为负的话,右移后最左边还是1,如果是循环的话,容易引起死循环。举个例子:负数0x80000000,右移后不是0x40000000,而是0xC0000000,这是因为,移位后,仍要保证是负数,一直右移,最终得到0XFFFFFFFF,死循环。

为了解决上述问题,我们可以换个方式,上述方式是移位后和1比较,我们不移动数字,而是移动1,这里1左移,对于32位整型,将1左移31次即可,完美避开死循环问题。

下面是本题c++解法:

//使用bit位和数字逐个比较累加
class Solution {
public:int  NumberOf1(int n) {int cnt = 0, bit = 1;for (int i = 0; i < 32; i++){//将bit左移if (n & (bit << i))cnt++;}return cnt;}
};

=============================================================================================

Linux应用程序、内核、驱动、后台开发交流讨论群(745510310),感兴趣的同学可以加群讨论、交流、资料查找等,前进的道路上,你不是一个人奥^_^。

《剑指offer》c++版本 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. 《LeetCode力扣练习》剑指 Offer 15. 二进制中1的个数 Java

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

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

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

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

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

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

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

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

    剑指 Offer 15. 二进制中1的个数 思路一:n>>1一直右移动,如果为1则res++ class Solution {public:int hammingWeight(uint32 ...

最新文章

  1. leetcode-45 跳跃游戏II
  2. keycloak 调研资料
  3. CF1406E:Deleting Numbers(构造、根号分块)
  4. Visual Studio 11预览: 新的编程语言功能
  5. Java 中初始化 List 集合的 7 种方式
  6. 洛谷 P4114 Qtree1 树链剖分
  7. 挤房工具发布--支持最新版浩方和VS平台
  8. 如何判断一个数是否是质数(C语言)-超详细
  9. 2019计算机考研学校排行,2019计算机考研:中国大学计算机学科排行榜
  10. c语言 pv操作,用C语言实现P、V操作
  11. 【视频】什么是梯度下降?用线性回归解释和R语言估计GARCH实例
  12. pip升级到最新版本
  13. 公有 IP 和私有 IP 的区别
  14. 2021/9/4王者荣耀服务器崩掉
  15. 通过C#生成支付宝收款码 三(支付宝官方SDK配合沙箱调试扫条码支付)
  16. 外媒:华为为融资修改内部员工认股规则
  17. DEBUG 使用RELEASE文件的 DLL
  18. win10家庭版使用局域网文件分享
  19. MP4 moov box解析
  20. java酒店入住管理系统代码_基于jsp的酒店入住管理系统-JavaEE实现酒店入住管理系统 - java项目源码...

热门文章

  1. delete与delete[]
  2. java快速排序的时间复杂度_java 快速排序
  3. python 预编译命令_Python子进程调用预编译j
  4. 深入浅出ES6(一):ES6是什么
  5. 陕西中小企业促进局 e-mail_重点注意2020陕西工程师职称评审破格指南
  6. 第6章-一阶多智体系统一致性-->6.2 离散时间多智能体系统一致性
  7. 【控制】《自动控制原理》胡寿松老师-第1章-自动控制的一般概念
  8. 2.7 负采样-深度学习第五课《序列模型》-Stanford吴恩达教授
  9. win10下如何设置开机自启动
  10. 编译Android源码前的一个步骤