ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

Ôø¾­Óöµ½µÄÒ»¸öcÓïÑÔÃæÊÔÌâ
2014-11-24 01:23:07 ¡¾´ó ÖРС¡¿ ä¯ÀÀ:9049´Î
Tags£ºÔø¾­ Óöµ½ Ò»¸ö ÓïÑÔ ÊÔÌâ

ÌâÄ¿ÃèÊö£º¶ÔÓÚÒ»¸ö×Ö½Ú(8bit)µÄÎÞ·ûºÅÕûÐαäÁ¿£¬Çó¶þ½øÖƱíʾÖС°1¡±µÄ¸öÊý£¬ÒªÇóËã·¨Ö´ÐÐЧÂʾ¡¿ÉÄܵظߡ£



ÏÈ¿´¿´ÎÒ×Ô¼ºµÄ´ð°¸£¨·½·¨Ò»£©£º
unsigned char Count(unsigned char byt)
{
unsigned char num=0;
while (byt)
{
num += (byt & 0¡Á01);
byt >>= 1;
}
return num;
}
²»¹ÜÓжàÉÙ¸ö1¶¼ÒªÑ­»·8´Î£¬Ö´ÐÐЧÂʲ»¸ß£¬µ«ÊÇÖ´Ðиú¯ÊýµÄʱ¼äÿ´Î¶¼ÊÇÈ·¶¨µÄ¡£


·½·¨¶þ£º
Ö±½ÓµÄ·½·¨¾ÍÊdzýÒÔ2ÏòÓÒÒÆ룬 Öð¸öͳ¼Æ£¬µ«ÊÇÓõ½È¡Ä£ºÍÏà³ý£¬Õâ¸öºÜºÄ×ÊÔ´¡£
int Count(BYTE v)
{
int num=0;
while (v)
{
if (v%2==1)
{
num++;
}
v=v/2;
}
return num;
}
ÇóÓà¡¢³ý·¨ºÜºÄ×ÊÔ´£¬Ð´³ÌÐòʱӦÉ÷Óá£


·½·¨Èý£º
ʹÓÃλ²Ù×÷£¬µ«ÊÇÖ»»áȥͳ¼Æ1µÄ¸öÊý£¬Ñ­»·µÄ´ÎÊýÊÇBYTEÖÐ1µÄ¸öÊý£¬ÎÞÐè±éÀú¡£
int Count(BYTE v)
{
int num=0;
while (v)
{
v &=(v-1); //v=v&(v-1)Õâ¸ö²Ù×÷¿ÉÒÔÖ±½ÓÏû³ýµôvÖеÄ×îÓұߵÄ1¡£
num++;
}
return num;
}
Ñ­»·´ÎÊýÓëByteÖÐ1µÄ¸öÊýÓйأ¬µ«ÊǺ¯ÊýÖ´ÐÐʱ¼ä²»È·¶¨£¬²»¹ýЧÂʱÈÇ°ÃæµÄÒªÌá¸ßÁ˺ܶ࣬ÊDz»ÊÇÒÔΪÕâ¾ÍÊÇ×î¼Ñ´ð°¸ÁË°É£¬¸æËßÄ㣺NO¡£


·½·¨ËÄ£º

²é±í·¨£¬Õâ¸öµÄЧÂÊÓ¦¸ÃÊÇ×î¸ßµÄÁË¡ª¡ª¿Õ¼ä»»Ê±¼ä¡£½«0~255¸÷¸öÊýÖÐËùº¬µÄ1ÁгöÀ´£¬²é±í£¡£¡
int countTable[256]=
{
0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,
1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8
};
int Count(BYTE v)
{
return countTable[v];
}
Õâ¸ö³ÌÐòÒªÇóЧÂʾ¡¿ÉÄܵĸߣ¬ÏÔÈ»×îºóÒ»ÖÖµÄʱ¼ä¸´ÔÓ¶È×îµÍÁËO(1).Ö´ÐÐʱ¼äÒ²ÊÇÈ·¶¨µÄ¡£¿Õ¼ä»»Ê±¼äÔÚijЩÇé¿öÏÂÊǸöºÃµÄÑ¡Ôñ£¬±ÈÈçÐèҪƵ·±Ê¹ÓÃÕâ¸öËã·¨µÄʱºò£¬µ«Ò²²»ÊǾ¡È»£¬»¹ÊǵÃÊÓÇé¿ö¶ø¶¨¡£


¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
ÉÏһƪ£ºc++µç»°ÃæÊÔÌ⼯½õ ÏÂһƪ£ºc/c++¾­µäÃæÊÔÌâ

×îÐÂÎÄÕÂ

ÈÈÃÅÎÄÕÂ

Hot ÎÄÕÂ

Python

C ÓïÑÔ

C++»ù´¡

´óÊý¾Ý»ù´¡

linux±à³Ì»ù´¡

C/C++ÃæÊÔÌâÄ¿