10NumberOf1InBinary二进制中1的个数

xiaoxiao2021-02-28  33

题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

/** * 主要思路是使用左移和位与,这两个技能点 * 右移的条件比较复杂,可能会造成无限循环,左移比较清晰一点 * while和if的条件判断语句是需要Boolean类型的,可以考虑加!= 0 * * @author LemonLin * @Description :NumberOf1InBinary10 * @date 2018/2/25-15:34 */ public class NumberOf1InBinary10 { public int NumberOf1(int n) { int count = 0; int flag = 1; //PS:这里的circleN用来控制循环次数,如果直接用flag控制不太好,会使while运行多次无效的循环 // PPS:后来调试过程种,发现不能这么操作,因为如果是负数的情况下,circleN这种做法就无法通过 //只能使用flag这样的直到达到int的上限就停止循环 int circleN = n; // while (circleN !=0){ while (flag !=0){ if ((n&flag)!=0){ count++; } flag = flag <<1; // circleN = circleN/2; } return count; } //测试代码 public static void main(String[] args) { NumberOf1InBinary10 numberOf1InBinary10 = new NumberOf1InBinary10(); int numberOf1 = numberOf1InBinary10.NumberOf1(9); System.out.println(numberOf1); } }
转载请注明原文地址: https://www.6miu.com/read-2800154.html

最新回复(0)