2015-10-15 77 views
1

Wikipedia article for Fletcher's checksum狀態:補碼對Fletcher的校驗和有沒有影響?

這些示例假設補運算,爲弗萊徹的算法將是一個補機不正確。

This SO question從一本書,上面寫着提供掃描:執行

加法模255(1的補數算術)

弗萊徹的校驗和使用的運行總和,所以不看到對負數的需求,其目的是識別差異,所以只要在檢查系統上使用相同的數字系統(補碼,二進制補碼,兩者都沒有),那麼這很重要嗎?維基百科頁面上給出的例子也指定了無符號整數類型。

我已經用C標記了這個,因爲在維基百科頁面上給出的例子都在C中,所以也許這在這方面有一些影響。我不是一個數學家,也不是一個勉強勝任的程序員,所以很可能存在一些非常明顯的原因,爲什麼補充會產生影響。

收到任何洞察的感激。

+0

我可以直接添加嗎?它需要我3種不同的瀏覽器,關閉每個插件,擴展,防火牆,等待一段時間,使用隱​​私瀏覽,等待一些...大約50次嘗試*只是*過去那該死的惱人的驗證碼。顯然它不會打擾我10000代表後,所以*請*,通過投票按鈕給我一些愛! (o_O) – iain

+0

它只是在現代二進制補碼硬件或無符號計算的意義上,你被迫手動計算從254到0(模255)的包裝。補碼系統上的帶符號字節將自由換行,避免了-0或+0,無需人工干預。 – doynax

+0

哦,並且想象你正在計算一個簡單的算術8位校驗和。如果以二進制補碼(模256)直接完成,那麼任何單個比特錯誤只會影響高於它們的較高有效比特,而在一個補碼和(模255)中雪崩到較低比特,因爲模數與該比特的質數位置。也就是說,否則,第7位中的兩個錯誤會相互抵消,而需要用256位錯誤才能取消第0位中的錯誤。 – doynax

回答

1

數字系統很重要。

雖然Fletcher的校驗和使用二進制補碼運算(整數計算模256)和補碼運算(整數計算模255),但結果算法具有不同的錯誤檢測屬性。補碼版本具有2040比特的未檢測雙比特錯誤的最小間隔,而二進制補碼具有僅16比特的最小間隔(本文中的表1)。

因此,Fletcher明確建議不要使用二進制補碼版本。