3 一些编码技术可以提高校验和计算速度
(1) 延迟进位法
这种方法在主要的累加循环结束之后再把进位值累加进和值。 其实现方式就使用
32 位的累加器获得 16 位校验和,这样溢出就产生在高 16 位上。这种方法避免了累
加器中进位传感器机构的设置,但是它要求的容量是原来的累加器容量的两倍,因
此它更多的依赖于硬件条件。
(2) 反向循环法
这种方法可以减少由循环而产生的负荷,有效的展开内部的累加循环,把循环过程
中的一系列加法命令复制下来。这种技术通常可以节省大量的时间,但是程序的逻
辑设计会比较复杂。
(3) 合并数据拷贝法
计算校验和以读人数据都需要将数据从内存的 一个位置转移到另一个位置,这样
会占用内存总线的宽带,而内存总线的传输数据是提高教育你和计算速度的瓶颈,
尤其是对于某些机器(如一些简单的慢速的微型机)来说,这一问题尤为严重。
为了解决这个问题,可以把数据读入的过程和校验的过程和二位一,也就是在读入
数据的同时计算校验和,这样就可以省去一次数据移动的过程,从而提高校验和的
计算速度。
2.4 课程设计分析
校验和的计算过程主要分位三个步骤:数据文件的输入,校验和的计算和校验结果
的输出。其中,主要是数据的输入和校验和的计算过程
1 数据输入方式
输入数据可能是以字符形式存储的 ,而校验和的计算则要采用数据形式,所以在
从文件读取数据时,都要进行字符到数据的相互转换。
(1) 将读入的 ASCII 码转化为相应的整型变量。
If(ch>= ‘o’&&ch<=’9’)
ch-=’0’ ;
else
if(ch>= ‘a’&& ch< ‘f’)
ch=ch-‘a’+10 ;
else
if(ch>= ‘A’&& ch< ‘F’)
ch=ch-‘A’+10
(2)在使用C++编程时直接使用16进制的方式打开输入文件。