《剑指offer》c++版本 15.二进制中1的个数
如题:
平常开发过程中,遇到求数的每位数字的时候,通常做法是将这个逐位右移,本题目计算整数的二进制中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的个数相关推荐
- 剑指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,循环次数是和给定数的精度也就是位数有关 思路三:用了二进制一 ...
- 《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 ...
- LeetCode-剑指 Offer 15. 二进制中1的个数
剑指 Offer 15. 二进制中1的个数 思路一:n>>1一直右移动,如果为1则res++ class Solution {public:int hammingWeight(uint32 ...
最新文章
- leetcode-45 跳跃游戏II
- keycloak 调研资料
- CF1406E:Deleting Numbers(构造、根号分块)
- Visual Studio 11预览: 新的编程语言功能
- Java 中初始化 List 集合的 7 种方式
- 洛谷 P4114 Qtree1 树链剖分
- 挤房工具发布--支持最新版浩方和VS平台
- 如何判断一个数是否是质数(C语言)-超详细
- 2019计算机考研学校排行,2019计算机考研:中国大学计算机学科排行榜
- c语言 pv操作,用C语言实现P、V操作
- 【视频】什么是梯度下降?用线性回归解释和R语言估计GARCH实例
- pip升级到最新版本
- 公有 IP 和私有 IP 的区别
- 2021/9/4王者荣耀服务器崩掉
- 通过C#生成支付宝收款码 三(支付宝官方SDK配合沙箱调试扫条码支付)
- 外媒:华为为融资修改内部员工认股规则
- DEBUG 使用RELEASE文件的 DLL
- win10家庭版使用局域网文件分享
- MP4 moov box解析
- java酒店入住管理系统代码_基于jsp的酒店入住管理系统-JavaEE实现酒店入住管理系统 - java项目源码...
热门文章
- delete与delete[]
- java快速排序的时间复杂度_java 快速排序
- python 预编译命令_Python子进程调用预编译j
- 深入浅出ES6(一):ES6是什么
- 陕西中小企业促进局 e-mail_重点注意2020陕西工程师职称评审破格指南
- 第6章-一阶多智体系统一致性-->6.2 离散时间多智能体系统一致性
- 【控制】《自动控制原理》胡寿松老师-第1章-自动控制的一般概念
- 2.7 负采样-深度学习第五课《序列模型》-Stanford吴恩达教授
- win10下如何设置开机自启动
- 编译Android源码前的一个步骤