二进制反码求和是一种二进制运算方法,主要用于网络数据包校验和计算。其核心规则如下:
运算规则 - 将所有二进制数按位取反(符号位也参与运算),从低位到高位逐列相加。 - 每次相加时,0+0=0(进位1),0+1=1,1+1=0(进位1),最高位进位需循环至最低位。 - 最终结果若产生最高位进位,则在最低位加1。
应用场景
- 主要用于IP协议首部检验和计算:
- 将首部数据按16位分组,先置校验和为0,再依次进行反码求和(采用32位加法)。 - 计算完成后,将结果存入校验和字段,接收端通过相同方法验证数据完整性。
特点
- 结果为反码形式,与原码、补码运算不同,不区分正负数,仅按位操作。 - 通过循环进位机制确保计算准确性,最终结果需再次反码处理(如IP协议中需与原首部异或)。
示例:
对于IP首部数据`1100 1010 0000`,取反后为`0011 0101`,按位相加得`0100 0000`,若最高位有进位则加1,最终结果存入校验和字段。