欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

《计算机网络课程设计(第2版)》——2.5节相关扩展

程序员文章站 2024-02-12 10:27:40
...

2.5 相关扩展
前面我们提到,校验和还有其他一些计算方法,下面我们就来简要介绍一下利用延迟进位法进行计算的方法。
延迟进位法的算法描述:将进位累加的过程延迟到整个累加循环结束之后进行,这样可以提高计算速度。

  1. 主要的实现过程
while(!infile.eof())         //判断文件是否结束, 若否则对被校验的16位数据进行累加
{
    int h,l;                 //分别表示16位数据的高8位和低8位
    infile>>hex>>h;          //从文件中读入一个16进制表示的数据, 作为高8位
    if(infile.eof()) l=0;    //若后面没有其他数据, 将0作为低8位
    else infile>>hex>>l;     //若后面还有数据, 读入下一个作为低8位
    sum+=(h*256+l);          //将组合好的16位数据累加到sum中  
}
infile.close();              //关闭文件
check_sum=short((sum&0xffff)+(sum>>16));
//将32位累加和转换为16位数据
//若累加过程中有向高16位的进位, 则要将进位部分加到低16位上
check_sum=~check_sum;        //对累加和取反码