1.对于一个32位的DOWRD,如何计算其二级制中1的个数?
2.两个DWORD,计算它们二级制中不同的位数的个数。
#include <iostream>
#include <windows.h>
using namespace std;
//计算一个DWORD中二级制形式中1的个数
int Count( DWORD val )
{
int count = 0;
while( val )
{
if( val & 0x01 ) ++count;
val = val >> 1;
}
return count;
}
//计算两个DWORD中有多少个值不同
int Diff( DWORD valA , DWORD valB )
{
DWORD temp = valA ^ valB;
return Count(temp);
}
int main()
{
DWORD valA = 0x10010101;
DWORD valB = 0x01100111;
cout<<Diff(valA,valB)<<endl;
system("pause");
return 0;
}
注:
DWORD即是unsigned long,定义在windows.h中。