/**//* 功能:获取有效的二进制位数; 参数:nData[in]: 要获取二进制位数的数据; 返回:成功返回数据的二进制位数。 说明:如果该数为0,则返回的二进制位数为0; 修改记录:无 ------------------------------------------------------------------*/ unsigned int GetBits(unsigned int nData) ...{ unsigned int nNum=0; while (nData!=0) ...{ nData=nData>>1; nNum++; } return nNum; }
/**//* 功能:根据指定多项式得到指定数据的CRC校验码 参数:nData[in]:要得到校验码的数据; nPoly[in]:预先设定的生成多项式; 返回值:成功返回得到的CRC校验码; -----------------------------------------------------------------*/ unsigned int GetCRC(unsigned int nData,unsigned int nPoly) ...{ unsigned int nRank=GetBits(nPoly)-1;//得到多项式的阶.固定值。 unsigned int nbits; unsigned int nFront; unsigned int nBehind;
unsigned int nMulData = nData<<nRank;//得到移动之后的数据; nbits = GetBits(nMulData);//得到数据的位数,会根据数据变动而变化。