二進位制反碼求和

weixin_33860722發表於2018-05-13

在看TCP/IP 時,看到IP 協議中有個 首部檢驗和 是用的 二進位制反碼求和。 不太理解,上網搜到了一個答案,記載下面。
以4bit(計算方便一點,和16bit是一樣的)做檢驗和來驗證。
假設原始資料為 1100 , 1010 , 0000(校驗位)
那麼把他們按照4bit一組進行按位取反相加。 1100 取反0011 , 1010 取反是0101,校驗位的計算就是 0011加上0101 是1000,填入到校驗位上
於是傳送的資料就是
1100 , 1010 , 1000
收到資料後同樣進行按位取反相加。0011+0101+0111 =1111;全為1表示正確 。 等於是 自己加上自己的取反, 那麼 結果肯定應該是全1 。如果傳輸正確的話。

相關文章