求一个数中二进制1的个数

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int num = -1;
	int count = 0;
	while (num)
	{
		num = num & (num - 1);
		count++;
	}
		printf("count = %d\n", count);
	system("pause");
	return 0;
}
  • 计算机里存放的都是数据的补码,正数的原反补都相同,负数的补码=原码+1
  • 位操作符: &与操作符 |或操作符 ^异或操作符
  • 两个相同的数字异或为0
  • 两个相同的数字与为1
  • 1&0=0 1&1=1
  • 1||0=1 0||0=0

猜你喜欢

转载自blog.csdn.net/qq_36474990/article/details/79849034