1. 程式人生 > 其它 >編寫程式碼實現:求一個整數儲存在二進位制中1的個數

編寫程式碼實現:求一個整數儲存在二進位制中1的個數

技術標籤:c++演算法c語言程式語言

求一個整數儲存在二進位制中1的個數

整數是十進位制數,將其轉換為二進位制數就會得到32位二進位制數
如 00000000000000000000000000001011
我們可以通過將二進位制數不斷地移動以為並且與上一個1,這樣只要每次與1的結果是1,這一位就位1
用count++來計算,否則則為0。

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int num = 0;
	int count = 0;
	scanf("%d", &num);
	int i = 0;
	for (i = 0; i<32
; i++) { if (1 == ((num >> i) & 1)) count++; } printf("%d\n", count); system("pause"); return 0; }

在這裡插入圖片描述
2.雖然我們寫出來想要的程式碼了,但是每一次都要執行32次,是不是有點麻煩
我們做一下優化

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int num = 0;
	printf("請輸入一個整數:");
	scanf
("%d", &num); int i = 0; int count = 0; while (num) { count++; num = num&(num - 1); } printf("它在二進位制中1的個數 = %d\n", count); system("pause"); return 0; }

在這裡插入圖片描述
感謝觀看!