补语对弗莱彻的校验和有影响吗?

时间:2015-10-15 05:14:19

标签: c checksum twos-complement ones-complement

Wikipedia article for Fletcher's checksum州:

  

这些例子假设有两个补码算法,因为Fletcher的算法在一个补码机器上是不正确的。

This SO question提供了一本书的扫描结果:

  

以模255(1' s补码算术)

进行加法

弗莱彻的校验和使用了一个运行总和,所以我不认为需要负数,目的是识别差异,所以只要相同的数字系统(一个数字系统)在检查系统上使用补码,两个补码,然后它是否重要?维基百科页面上给出的示例也指定了无符号整数类型。

我用C标记了这一点,因为维基百科页面上给出的示例全部都在C中,所以也许这对此有所影响。我不是一个数学家,也不是一个几乎不称职的程序员,所以很可能有一些明显的理由说明补充会产生影响。

感激不尽。

1 个答案:

答案 0 :(得分:1)

号码系统非常重要。

尽管Fletcher的校验和使用二进制补码算法(模数为256的整数计算)和一个补码算术(整数计算模数为255),但得到的算法具有不同的错误检测属性。该补码版本具有2040位未检测到的双位错误的最小间隔,而该二进制补码的最小间隔仅为16位(本文中的表1)。

因此,弗莱彻明确建议不要使用这两种补充版本。

相关问题