Encuentra el número de bit 1 en un entero

 

#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

 

Supongo que te gusta

Origin blog.csdn.net/qingfengjuechen/article/details/105447084
Recomendado
Clasificación