2016 - 2024

感恩一路有你

UDP二进制反码运算求校验和 二进制反码运算是怎么计算的?

浏览量:1536 时间:2021-03-12 17:27:33 作者:admin

二进制反码运算是怎么计算的?

算法实现:unsigned short IPuuucsum(unsigned char*iph,unsigned int ihl){unsigned int sumuuuuuuuasmuuuuuuuuuuuvolatileuuu1(“movl(%1),%0n”subl,%2n”jbe 2fn”addl 4(%1),%0n”adcl 8(%1),%0n”adcl 12(%1),%0n”1:adcl 16(%1),%0n“”lea 4(%1),%1n“”decl%2n“”jne 1bn“”adcl,%0n“”movl%0,%2n“”Shrl,%0n“”addw%W2,%w0n“”adcl,%0n“”Notl%0n“”2:n“:”=R”(总和),”=R”(IPH),”=R”(IHL):“1”(IPH),“2”(IHL):“memory”)return(sum)}扩展数据二进制逆码求和的工作原理:0和0的和为0,但要产生进位1,0和1的和为1,1和1的和为0。如果进位是在最高位相加后产生的,则最终结果将被加1。(0)逆(0)逆=1,1=10(1)逆(0)逆=0,1=1(1)逆(1)逆=0,0=0

两个数字用于计算二进制逆代码的和。它的规则是从低阶到高阶逐列计算。0和0的加法是0,但是要产生进位1,0和1的加法是1,1和1的加法是0。如果进位是在最高位相加之后生成的,则最终结果将增加1。例如:给定x=1101,y=0110,z=x-y由反码计算。[10] Inverse=01101[-y]Inverse=11001,则[Z]Inverse=[x]Inverse[-y]Inverse=01101 11001 1(循环进位)=00111,其真值为Z=0111

示例如下:真值x=-11111,如果字长为8位,则:[x]original=10011111,最高位为符号位,1表示负数[x]Inverse=11100000,取原码除符号位外的值,求逆码[x]补码=11100001,例如真值y=100011,8位字长,[y]原=[y]逆=[y]补码=00010011,最高位(符号位)为0,表示正数,右边的两个零用来完成8位字长

UDP二进制反码运算求校验和 反码运算规则 二进制数求反码

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。