CRC校验算法,8比特汉明码模拟通讯程序,仪器系数自动标定算法,行列式计算,求解三元一次方程组,能剔除粗大误差样本的统计算法,线性插值算法,抛物线插值算法,三元一次方程组的行列式解法,解线性方程组的主元消去法,图的广度优先遍历算法,图的广度优先遍历算法,图的深度优先遍历算法,网络中顶点间最短距离算法,网络的最小生成树算法
常用C语言算法大集合
//CRC校验算法
unsigned char S[130]; //原始数据为128字节,CRC校验2字节
unsigned int CRC ( ) //CRC校验算法(共130字节)
{
unsigned int i,j,m,n,p,q,c=0x1021;
m=S[0]*256+S[1]; //首先取两个字节,拼成16位整数,作为基数
for (i=1;i<=64;i++) { //其余128字节分64批处理,每批2字节
n=S[2*i]*256+S[2*i+1]; //取两个字节,拼成16位整数
for (j=0;j<16;j++) { //每批计算16次,每次处理1比特
p = m & 0x8000; //保留基数的最高位
q = n & 0x8000; //保留当前整数的最高位
m <<= 1 ; n <<= 1 ;//两者均左移一位
if (q) m++ ; //当前整数的最高位拼入基数
的最低位
if (p) m ^= c ; //如果基数移出的最高位为1,
则“减去”0x1021
}
}
return m; //返回校验结果
}
main ( )
{
int i;
unsigned int c;
for (i=0;i<128;i++) S[i]=i;//设置128字节原始数据
S[128]=S[129]=0; //将最后两个字节设置为零
c = CRC ( ) ; //进行CRC校验
S[128]=c/256;S[129]=c%256;//将校验结果装入最后两个字节
c = CRC ( ) ; //再进行CRC校验,结果应该为零
S[4] ^= 0x20; //引入一个差错
c = CRC ( ) ; //再进行CRC校验,结果不为零,发现差错
S[6] ^= 0xff; //再引入8个差错
c = CRC ( ) ; //再进行CRC校验,结果不为零,发现差错
while (1) ; //在这一行设置断点,中止程序运行,以便观察程序运行的结果 }
//8比特汉明码模拟通讯程序
#define N 8 //原始数据的字节数
unsigned char HM[16]={0x00,0x71,0xB2,0xC3,0xD4,0xA5,0x66,0x17,//编码表 0xE8,0x99,0x5A,0x2B,0x3C,0x4D,0x8E,0xFF};