zoukankan      html  css  js  c++  java
  • 面试题10:二进制中1的个数

    题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1,因此如果输入9,该函数输出2.

    我们的分析就是:把一个整数减去1,再和原整数做与运算,会把该整数最右边的一个1变成0.那么一个整数的二进制表示中有多少个1,就可以进行多少次运算,直到为0。

    比如数字9的二进制表示是1001,

    第一次:1001&(1001-1)=1000,

    第二次:1000&(1000-1)=0

    package offer_10;
    
    public class NumberOf1InBinary {  
        public int numberOf1(int num) {  
            int count = 0;  
            while (num != 0) {  
                count++;  
                num = num & (num - 1);  
      
            }  
            return count;  
        }  
      
        public static void main(String[] args) {  
            NumberOf1InBinary test = new NumberOf1InBinary();  
            System.out.println(test.numberOf1(9));  
        }  
    }

    参考:http://blog.csdn.net/u012289407/article/details/45565309

  • 相关阅读:
    lightoj-1050
    lightoj-1305
    lightoj-1354
    lightoj-1433
    lightoj-1227
    lightoj-1189
    lightoj-1182
    lightoj-1011
    lightoj-1009
    lightoj-1023
  • 原文地址:https://www.cnblogs.com/Donnnnnn/p/5744599.html
Copyright © 2011-2022 走看看