剑指Offer—11—二进制中1的个数
来源:互联网 发布:传智播客oa项目数据库 编辑:程序博客网 时间:2024/05/21 17:35
二进制中1的个数 : 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路:
数字中每一位与 1 进行 &(与),结果为 1 即可累加计数
n 与 n - 1 进行与运算,如 1100 & 1011 = 1000,直到 n = 0 时终止循环。(这个很有技巧,需要多了解)
注意点:
进行 & 的过程中,可将数字右移进行匹配,但是如果匹配的数字是负数,那么右移的过程中,添加的位将为 1 ,后果将不堪设想
于是将 1 进行 左移,那么不用理会原数的正负了
package A11二进制中1的个数;public class Solution { public int NumberOf1(int n) { int count = 0; int flag = 1; while(flag !=0 ){ if ((flag&n) != 0) { count++; } flag = flag << 1; } return count; //高效解法// int count = 0;// while (n != 0) {// count++;// n = (n-1)&n;// }// return count; } public static void main(String[] args) { Solution solution = new Solution(); System.out.println(solution.NumberOf1(8));// System.out.println(1<<1); }}
阅读全文
0 0
- 剑指Offer—11—二进制中1的个数
- 《剑指offer》—11、二进制中1的个数
- 剑指offer(11)—二进制中1的个数
- 《剑指offer》——二进制中1的个数
- 剑指offer——二进制中1的个数
- 剑指offer——二进制中1的个数
- 剑指offer——二进制中1的个数
- 二进制中1的个数——剑指offer
- 剑指offer——二进制中1的个数
- 剑指offer——二进制中1的个数
- 剑指offer——二进制中1的个数
- 剑指offer——二进制中1的个数
- 剑指offer——11.二进制中1的个数
- 剑指offer—二进制中1的个数
- 剑指offer—二进制中1的个数
- 剑指offer—二进制中1的个数
- 剑指offer—二进制中1的个数
- 剑指offer:二进制中1的个数
- 三种常见的设计模式
- oracle数据库访问权限控制
- 表单重置
- angular项目SEO去掉路由#详解
- jquery easyui combobox设置默认选中项
- 剑指Offer—11—二进制中1的个数
- Unity3d 的 EditorUtility类的简单说明
- ubuntu 卸载软件
- 找到自己
- 关于正则表达式
- Git安装及配置
- JavaPoet动态生成代码
- 网易2018校招内推编程题
- .net core 2.0学习笔记(三):度量.net framework 迁移到.net core的工作量