1

フレッチャーのチェックサムに関するウィキペディアの記事には、次のように記載されています。

Fletcher のアルゴリズムは 1 の補数マシンでは正しくないため、これらの例では 2 の補数演算を想定しています。

この SO の質問は、次のような本からのスキャンを提供します。

加算は modulo 255 (1 の補数演算) で実行されます。

Fletcher のチェックサムは実行中の合計を使用するため、負の数の必要性はわかりません。目的は違いを識別することです。そのため、同じ数のシステム (1 の補数、2 の補数、どちらも) がチェック システムで使用されていない限り、それは問題ですか?ウィキペディアのページにある例では、符号なし整数型も指定されています。

ウィキペディアのページにある例はすべて C で書かれているので、これに C のタグを付けました。私は数学者ではなく、ほとんど有能なプログラマーではないので、補数が影響を与える理由が盲目的に明らかな理由がある可能性は十分にあります。

4

1 に答える 1

3

番号システムは非常に重要です。

Fletcher のチェックサムは、2 の補数演算 (モジュロ 256 の整数計算) と 1 の補数演算 (モジュロ 255 の整数計算) の両方を使用して機能しますが、結果のアルゴリズムには異なるエラー検出特性があります。1 の補数バージョンでは、2040 ビットの検出されないダブル ビット エラーの最小分離があり、2 の補数では 16 ビットの最小分離しかありません (この論文の表 1)。

したがって、Fletcher は、2 の補数バージョンを使用しないことを明示的に推奨しています。

于 2017-07-19T20:21:46.417 に答える