【题目】
给定一个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 }
来源:左程云老师《程序员代码面试指南》