二进制中1的个数 (位运算)
来源:互联网 发布:推荐一本java web的书 编辑:程序博客网 时间:2024/05/10 22:57
题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
知识点:
1. 左移运算符
1)格式:value << num ,num 指定要移动的位数。
2)运算规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模。如对int型移动33位,实际上只移动了1位。
当左移的运算数是int 类型时,每移动1位它的第31位就要被移出并且丢弃;当左移的运算数是long 类型时,每移动1位它的第63位就要被移出并且丢弃;当左移的运算数是byte 和short类型时,将自动把这些类型扩大为 int 型。
3)数学意义:在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方
2、 右移运算符
1)格式:value >> num,num 指定要移动的位数。
2)运算规则: 按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1
当右移的运算数是byte 和short类型时,将自动把这些类型扩大为 int 型。
3)数学意义:右移一位相当于除2,右移n位相当于除以2的n次方。
3、无符号右移
1)格式:value >>> num,num 指定要移动的位数。
2)运算规则:忽略了符号位扩展,0补最高位
无符号右移运算符>>> 只是对32位和64位的值有意义
思路一:将这个整数依次进行无符号右移,与1按位与
public class Solution { public int NumberOf1(int n) { int count = 0; while (n != 0) { if ((n & 1) == 1) count++; n = n >>> 1; } return count; }}
public class Solution { public int NumberOf1(int n) { int count = 0; int flag = 1; while (flag != 0) { if ((n & flag) != 0) count++; flag = flag << 1; } return count; }}
思路三:最优解
public class Solution { public int NumberOf1(int n) { int count = 0; while (n != 0) { count++; n = (n - 1) & n; } return count; }}
思路四:将0值去掉,求字符串长度
public class Solution { public int NumberOf1(int n) { return Integer.toBinaryString(n).replaceAll("0", "").length(); }}
阅读全文
0 0
- 位运算:二进制中1的个数
- 二进制中1的个数----位运算
- 位运算------二进制中1的个数
- 剑指offer: 二进制中1的个数(位运算)
- 【剑指Offer】二进制中1的个数(位运算)
- 位运算(一):二进制中1的个数
- 二进制中1的个数 (位运算)
- 二进制数中1的个数,位运算的境界
- 第1天 位运算-二进制中1的个数
- 统计二进制中1的个数和 - 位运算
- 位运算之二进制中1的个数
- 位运算:二进制中1的个数12
- 位运算--求一个 数二进制中1的个数
- 剑指offer_位运算---二进制中1的个数
- 统计一个整数的二进制中1的个数(位运算技巧)
- 统计一个整数的二进制中1的个数(位运算技巧)
- 剑指Offer(第二版)面试题15:二进制中1的个数(位运算)
- 位运算实现反转字节和求二进制整数中1的个数(无循环)
- 饿了么CEO:从外卖平台到物流网络 | 新浪C+
- 金山CEO张宏江的职业轨迹:不想做CEO的工程师不是好学术领袖
- 腾讯手机管家iPhone最新版登陆App Store,最大数据库精准防骚扰
- qt5 中文乱码解决
- StringBuffer和StringBuilder的区别
- 二进制中1的个数 (位运算)
- 终于盼来了Hinton的Capsule新论文,它能开启深度神经网络的新时代吗?
- 移动互联网用户红利时代结束,BAT变现之战即将开打
- 数据结构课程笔记
- 为免Note 7爆炸三星将推送系统更新:电池只能充电60%
- 太空赏月!天宫二号发射成功
- HDU 3487 Play with Chain (Splay tree)区间切割和反转操作。
- Apple Watch 2闪亮登场,微软Band 2缘何将成绝唱?
- Redis | Recode some of the mistakes