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

  • 相关阅读:
    移动布局---1. 移动端布局基础
    1. CSS新特性之选择器
    1. H5新增语义化标签
    POJ 3281
    poj 1986
    POJ 3728
    poj 2763
    poj 2749
    uva 11294
    LA 3713
  • 原文地址:https://www.cnblogs.com/Donnnnnn/p/5744599.html
Copyright © 2011-2022 走看看