剑指offer15. 二进制中1的个数P100

mac2024-05-12  42

剑指offer15. 二进制中1的个数 P100

int countNumbersOfOne(int a) { int count = 0; unsigned int flag = 1; while (flag) { if ((a & flag)) ++count; flag = flag << 1; //常规方法 让1从右往左分别与a的每一位与 // 不能右移a,因为 0x80000000时死循环 } return count; } int countNumbersOfOne2(int a) { int count = 0; while (a) { a &= a - 1; // a&a-1之后会刚好相当于a的二进制去掉一个最后一个1, ++count; // 统计它循环次数就知道几个1了 } return count; }

扩展: 1 一条语句判断整数是不是2的整数次方 2 两个整数m,n 求m要改变多少二进制位才能变成n

1 (二进制中只有一个1) 2 (1)先异或^(2)统计结果中1的个数

最新回复(0)