TCP/IP 中的二进制反码求和算法

对于这个算法,很多书上只是说一下思路,没有具体的实现。我在这里举个例子吧

以4bit(计算方便一点,和16bit是一样的)做检验和来验证。

建设原始数据为 1100 , 1010 , 0000(校验位)

那么把他们按照4bit一组进行按位取反相加。 1100取反0011 , 1010取反是0101,0011加上0101 是1000,填入到校验位后

1100 , 1010 , 1000

那么这个就是要发送的数据。收到数据后同样进行按位取反相加。0011+0101+0111 =1111;全为1表示正确


另外注意,当地一步计算校验和的时候,有可能相加后最高位会有进位,那么不能舍弃,一定要加到低位,才能是结果正确
详细出处参考:http://www.jb51.net/article/30028.htm

posted @ 2014-01-03 19:56  ITtecman  阅读(1200)  评论(0编辑  收藏  举报