求一個整數中bit位爲1的個數

 

#include <stdio.h>


int get_bit1_cnt(unsigned int x)
{
	int n = 0;
	while (x) {
		n += ((x & 0x1)? 1 : 0);
		x = x>>0x1;
	}
   return n;
}

int get_bit1_cnt_test(unsigned int x)
{
   int n = 0;
   n = get_bit1_cnt(x);
   printf("0x%08x has %2d bit1 in it\n", x, n);
   return n;
}

int get_bit1_cnt_test2()
{
   unsigned int x = 0xffffffff;
   while (x) {
      get_bit1_cnt_test(x);
	  x = x>>1; 
   }	
   return 0;
}

int main()
{
   /* 我的第一個 C 程序 */
   printf("Hello, World! \n");
   
   get_bit1_cnt_test(0x0ffffff0);
   get_bit1_cnt_test2();
   return 0;
}

 

Hello, World! 
0x0ffffff0 has 24 bit1 in it
0xffffffff has 32 bit1 in it
0x7fffffff has 31 bit1 in it
0x3fffffff has 30 bit1 in it
0x1fffffff has 29 bit1 in it
0x0fffffff has 28 bit1 in it
0x07ffffff has 27 bit1 in it
0x03ffffff has 26 bit1 in it
0x01ffffff has 25 bit1 in it
0x00ffffff has 24 bit1 in it
0x007fffff has 23 bit1 in it
0x003fffff has 22 bit1 in it
0x001fffff has 21 bit1 in it
0x000fffff has 20 bit1 in it
0x0007ffff has 19 bit1 in it
0x0003ffff has 18 bit1 in it
0x0001ffff has 17 bit1 in it
0x0000ffff has 16 bit1 in it
0x00007fff has 15 bit1 in it
0x00003fff has 14 bit1 in it
0x00001fff has 13 bit1 in it
0x00000fff has 12 bit1 in it
0x000007ff has 11 bit1 in it
0x000003ff has 10 bit1 in it
0x000001ff has  9 bit1 in it
0x000000ff has  8 bit1 in it
0x0000007f has  7 bit1 in it
0x0000003f has  6 bit1 in it
0x0000001f has  5 bit1 in it
0x0000000f has  4 bit1 in it
0x00000007 has  3 bit1 in it
0x00000003 has  2 bit1 in it
0x00000001 has  1 bit1 in it

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章