【剑指Offer】二进制中1的个数(位运算)
2015-09-17 00:20
183 查看
问题描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。算法分析
本题需要用到位运算当传进来一个正整数n时,假设n=3,二进制表示为 011
011&1 = 1 一个1, n右移1位
01&1 = 1 又一个1, n右移1位
共需移31次
传进来一个负整数n,假设n = -2 二进制表示为
原码:10000000 00000000 00000000 00000010
反码:11111111 11111111 11111111 11111101
补码:11111111 11111111 11111111 11111110
可与正整数共享处理方法
代码实现
class Solution { public: int NumberOf1(int n) { int num = 32; int sum = 0; while (num--){ if (n & 1 == 1){ sum++; } n = n >> 1; } return sum; } };
相关文章推荐
- 【剑指Offer】斐波那契数列
- 【剑指Offer】用两个栈实现队列
- 小菜的前端编程散谈(4)
- JSP程序运行原理、文档结构及简单输入输出实例分析
- JS正则表达式基本用法(经典全)
- JS实现无限级网页折叠菜单(类似树形菜单)效果代码
- jQuery实现仿美橙互联两级导航菜单效果完整实例
- jQuery实现仿腾讯迷你首页选项卡效果代码
- JS+CSS实现精美的二级导航效果代码
- JQuery实现级联下拉框效果实例讲解
- JQuery入门基础小实例(1)
- JQuery实现可编辑的表格实例讲解(2)
- JQuery菜单效果的两个实例讲解(3)
- JS实现具备延时功能的滑动门菜单效果
- jquery实现仿Flash的横向滑动菜单效果代码
- jQuery实现可用于博客的动态滑动菜单完整实例
- css属性学习笔记
- 【搬运】CSS实现背景透明,文字不透明,兼容所有浏览器
- 通过JS获取浏览器的类型、版本等信息
- 《JavaScript Dom编程艺术》---总结(二)DOM