题目:
49% 通过 计算在一个 32 位的整数的二进制表式中有多少个 1.
样例
给定 32 (100000),返回 1
给定 5 (101),返回 2
给定 1023 (111111111),返回 9
解题:
Java程序:
public class Solution { /** * @param num: an integer * @return: an integer, the number of ones in num */ public int countOnes(int num) { // write your code here return countOnes1(num); //总耗时: 1201 ms // return countOnes2(num); //总耗时: 1185 ms // return countOnes3(num); // 总耗时: 1215 ms } public int countOnes1(int num){ int count = 0; while(num!=0){ if(num%2==1) count++; num=num/2; } return count; } public int countOnes2(int num){ int count = 0; while(num!=0){ count +=num&0x01; num = num>>1; } return count; } public int countOnes3(int num){ int count = 0; while(num!=0){ num = num & (num-1); count++; } return count; } };