【剑指Offer】二进制中1的个数(位运算)
来源:互联网 发布:淘宝考试不在延迟发货 编辑:程序博客网 时间:2024/05/16 09:22
问题描述
输入一个整数,输出该数二进制表示中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; }};
2 0
- 剑指offer: 二进制中1的个数(位运算)
- 【剑指Offer】二进制中1的个数(位运算)
- 剑指Offer(第二版)面试题15:二进制中1的个数(位运算)
- 剑指offer-面试10:二进制中1的个数(位运算)
- 剑指offer面试题10:二进制中1的个数(与位运算有关)
- 《剑指offer》刷题笔记(位运算):二进制中1的个数
- 剑指offer面试题10 二进制中1的个数(位运算专题)
- 【剑指offer】位运算相关-二进制中1的个数10
- 剑指offer 2.4 位运算,求二进制中1的个数
- 【剑指offer】2.4.3位运算——面试题10:二进制中1的个数
- 《剑指offer》:[14]位运算以及求二进制中1的个数
- 剑指offer 10题 【位运算】二进制中1的个数
- 剑指offer——面试题10:位运算之二进制中1的个数
- 《剑指Offer》位运算——求二进制数中1的个数
- 剑指offer:(10)位运算,计算二进制中1的个数
- 位运算:二进制中1的个数
- 二进制中1的个数----位运算
- 位运算------二进制中1的个数
- HDU 543Ponds
- const 与 readonly知多少
- wiggle sort Given a list of integers, sort them so the output is s1 <= s2 >=s3 <=s4 ... sN.
- 使用JAVA到处100W级别的EXECL到处
- Chapter 2
- 【剑指Offer】二进制中1的个数(位运算)
- Chapter 3
- C#栈的简单介绍及应用
- Java解析XML文件
- 字符串匹配 ——朴素算法
- Fragment,ActionBar,ViewPager实现选项卡实现点击切换Fragment
- 详解android中的AsyncTask
- C语言实现静态链表
- Android LinearLayout中TextView标签项自动换行的一种解决方案