剑指Offer 10题 二进制中1的个数 Java版

来源:互联网 发布:vpn代理软件破解版 编辑:程序博客网 时间:2024/05/18 00:19

这里主要牵扯的就是二进制的运算:

1:二进制主要有与,或,异或,左右移位操作;

2:对Java来说,有无符号移位的操作>>>,<<<所以可以不用考虑正负的问题,但是还是要注意边界;

3:减1然后异或的操作很巧,可以记一下这种处理方式;


package test;public class NumberOf1 {private int numberOf1(int n){int count =0;while(n!=0){if( (n & 1)!=0 )count++;n = n>>>1;}return count;}private int numberOf12(int n){int count = 0;while (n!=0){++count;n = (n-1)&n;}return count;}public static void main(String[] args) {// TODO Auto-generated method stubNumberOf1 numberOf1 = new NumberOf1();int n = 23;System.out.println(numberOf1.numberOf1(n));System.out.println(numberOf1.numberOf12(n));}}


0 0