쉬운걸 엄청 고민했다. 수정 할 부분이 어딘지 찾고 있다.

구글 검색으로 4줄안에 끝나는 소스도 있어서 많이 좌절했었다.


#include <stdio.h>


unsigned char HexNonZeroCount(unsigned int n);


int main()

{

printf("HexNonZeroCount = %d\n",HexNonZeroCount(1026));

return 0;

}


unsigned char HexNonZeroCount(unsigned int n)

{

unsigned char nCount = NULL;

unsigned char ucHexParsed[4]={};


ucHexParsed[0]=n&0xFF;

ucHexParsed[1]=n>>=8&0xFF;

ucHexParsed[2]=n>>=8&0xFF;

ucHexParsed[3]=n>>=8&0xFF;


for(int i=0; i<4; i++)

{

if(ucHexParsed[i])

{

int j;

for(j=0; ucHexParsed[i]!=0; j++)

{

ucHexParsed[i]&=ucHexParsed[i]>>1;

}

nCount+=j;

}

}

return nCount;

}

Posted by fona