每日练习——输入一个整数,返回该二进制中1的个数,其中负数用补码表示

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Lycorisradiata__/article/details/80988357

第一种方法:->效率不够高

int count_one_bits(unsigned int value)
{
	int i = 0;
	int count = 0;
	for (i = 0; i < 32; i++)
	{
		if ((value>>i) & 1 == 1)
			count++;
	}
	return count;
}

 

第二种方法:->效率较好

一个整数-1与这个整数做 &运算,相当于将这个整数的二进制序列的最后一个1变成0

int count_one_bits(unsigned int value)//第三种,效率最高
{
	int count = 0;
	while (value != 0)
	{
		count++;
		value &= value - 1;
	}
	return count;
}

 

展开阅读全文

没有更多推荐了,返回首页