"Coding Interview Guide" -- 整数的二进制表达中有多少个1

题目

  给定一个32位整数n,可为0,可为正,也可为负,返回该整数二进制表达式中1的个数

分析

  按位与(&)操作可以充当掩码的作用,即,可以屏蔽某些位

  对整数n每次进行无符号右移1位,并检查最后一位是否为1来进行统计该整数二进制表达式中1的个数

  

 1 public int binaryOneNum(int num)
 2 {
 3     int res = 0;          // 记录num二进制表达式中1的个数
 4     while(num != 0)
 5     {
 6     res += num & 1;    // 根据最后一位是否为1来更新res
 7     num >>>= 1;       // 无符号右移1位
 8     }
 9 
10     return res;
11 }    

来源:左程云老师《程序员代码面试指南》

猜你喜欢

转载自www.cnblogs.com/latup/p/10901609.html