1. 程式人生 > 其它 >【C語言】輸入一個整數,輸出該數二進位制表示中1的個數,其中負數用補碼錶示

【C語言】輸入一個整數,輸出該數二進位制表示中1的個數,其中負數用補碼錶示

技術標籤:c語言

方法一:count計數法

#include<stdio.h>

int count_bit_one(unsigned int num)//負數的原始碼和補碼不相同,所以把負數的二進位制補碼轉化成對應的無符號的原始碼的數。正數的原始碼和補碼相同。
{
    //此方法是對一個數的二進位制原始碼進行操作的
	int count = 0;
	while (num)
	{
		if (num % 2 == 1)
		{
			count++;
		}
		num /= 2;
	}
	return count;
}

int main()
{
	int num = 0;
	scanf
("%d", &num); printf("%d\n", count_bit_one(num)); return 0; }

方法二:按位與法(普通版)

#include<stdio.h>

int count_bit_one(int num)
{
	int i = 0;
	int count = 0;
	for (i = 0; i < 32; i++)
	{
		if (((num >> i) & 1) == 1)
		{
			count++;
		}
	}
	return count;
}

int main
() { int num = 0; scanf("%d", &num); printf("%d\n", count_bit_one(num)); return 0; }

方法三:按位與法(高效率版)

#include<stdio.h>

int count_bit_one(int num)
{
	int count = 0;
	while (num)
	{
		count++;
		num = num & (num - 1);//每進行一次這個操作,num的二進位制表示中就少一個1,直到最後全為0
	}
	return count;
} int main() { int num = 0; scanf("%d", &num); printf("%d\n", count_bit_one(num)); return 0; }

執行結果
在這裡插入圖片描述
在這裡插入圖片描述