统计一个数的二进制表示时1的个数

    技术2022-05-11  20

    统计一个数的二进制表示时1的个数。int  func(x){     int  countx  =   0 ;     while (x)     {        countx ++ ;        x  =  x & (x - 1 );    }      return  countx;} 

     

    反转一个字节 和 判断32位整数二进制中1的个数 的算法

    unsigned char reverse8( unsigned char c ){    c = ( c & 0x55 ) << 1 | ( c & 0xAA ) >> 1;    c = ( c & 0x33 ) << 2 | ( c & 0xCC ) >> 2;    c = ( c & 0x0F ) << 4 | ( c & 0xF0 ) >> 4;    return c;}unsigned long func(unsigned long x){    x = (x & 0x55555555UL) + ((x >> 1) & 0x55555555UL);    x = (x & 0x33333333UL) + ((x >> 2) & 0x33333333UL);    x = (x & 0x0f0f0f0fUL) + ((x >> 4) & 0x0f0f0f0fUL);    x = (x & 0x00ff00ffUL) + ((x >> 8) & 0x00ff00ffUL);    x = (x & 0x0000ffffUL) + ((x >> 16) & 0x0000ffffUL);    return x;}


    最新回复(0)