精华内容
下载资源
问答
  • 二进制反码运算
    千次阅读
    2021-10-06 17:12:31

    举例

    1001 + 1000 +0001 = ?
    运算过程为:
    第一步:1001+1000 = 10001
    最高有进位(或者说“溢出”),将最高位移走,加到结果上。即:
    第二步:(1)0001+1 = 0010
    第三步:0010 + 0001 = 0011
    得出结果:0011
    求反码,得到UDP校验和。

    十六进制来求

    1001 + 1000 + 0001 = 9H + 8H + 1 = ?
    第一步:9 + 8 = 11H
    最高有进位(或者说“溢出”),将最高位移走,加到结果上。即:
    第二步:1 + 1 = 2H
    第三步:2 + 1 = 3H
    得出结果:3H,0011

    更多相关内容
  • UDP检验和中的二进制反码运算

    千次阅读 多人点赞 2019-06-19 21:34:36
    今日复习到计算机网络的UDP检验和,发觉不懂 按二进制反码求和中的若最高位相加后产生进位,则最后得到的结果要加1 这句话的意思和所代表的具体操作。翻看了一些视频和资料之后发现有一个老师讲解的还是很详细的 。 ...

    今日复习到计算机网络的UDP检验和,发觉不懂 按二进制反码求和中的若最高位相加后产生进位,则最后得到的结果要加1 这句话的意思和所代表的具体操作。翻看了一些视频和资料之后发现有一个老师讲解的还是很详细的 。 下面附图一张
    在这里插入图片描述其实是如果最高位进1就把那个1 拿下来 加到最后面去。
    划重点
    拿下来
    拿下来
    拿下来!
    实在不懂的我还留下了 课程的链接
    https://www.icourse163.org/learn/HIT-154005#/learn/content?type=detail&id=1210288483&cid=1212250036

    展开全文
  • 二进制反码运算

    万次阅读 多人点赞 2016-10-13 22:13:55
    反码运算究竟是如何运算。 首先在计算机中所有的数据都是以二进制的形式存储的,正数和负数的区别仅仅是符号位的区别,正数的符号位是0,而负数的符 号位是1,然后正数的反码和补码都和原来一样,而负数的反码是符号...

    最近在看计算机网络的相关知识,看到了运输层相关的知识,看到UDP检验和然而却看不懂什么意思!所以只好百度一下二进制

    反码运算究竟是如何运算。

    首先在计算机中所有的数据都是以二进制的形式存储的,正数和负数的区别仅仅是符号位的区别,正数的符号位是0,而负数的符

    号位是1,然后正数的反码和补码都和原来一样,而负数的反码是符号位不变,其他按位取反,补码是在反码的基础上加1.

    例如:18的二进制数是010010,最前的一位是符号位,反码010010,补码010010

              -18的二进制数是110010,反码是101101,补码是101110

    下面是反码运算:

    0和0相加是0,0和1相加是1,1和1相加是0但要产生一个进位1,加到下一列。如果最高位相加后产生进位,则最后得到的结果要加1。

    PS:

    1.反码运算时,其符号位与数值一起参加运算。
    2.反码的符号位相加后,如果有进位出现,则要把它送回到最低位去相加(循环进位)。
    3.用反码运算,其运算结果亦为反码。在转换为真值时,若符号位为0,数位不变;若符号位为1,应将结果求反才是其真值。(这里求反不包括符号位)
    [例1] 已知X = 01101 , Y = 0 0110 , 用反码计算Z = X-Y。
    解: [X]反 = 01101,[-Y]反 = 11001,则[Z]反 =[X]反+[-Y]反 = 01101+11001+1(循环进位)= 00111 , 其真值为Z = 00111。
    [例2] 已知X = 0 0110 , Y = 0 1101 , 用反码计算Z = X-Y。
    解: [X]反 = 00110,[-Y]反 = 10010,则[Z]反 =[X]反+[-Y]反 = 00110 + 10010
    接下来就是
    = 11000 , 其真值为Z = 10111

    展开全文
  • 二进制反码求和运算

    万次阅读 多人点赞 2019-10-08 11:54:50
    (2019年2月19日注:这篇文章原先发在自己github那边的博客,时间是2016年7月12日)  周四要给工作室的小朋友们继续培训计算机... 其实本质上来说这个计算原理还是不难的,就是一个二进制反码求和运算,具体来说...

      (2019年2月19日注:这篇文章原先发在自己github那边的博客,时间是2016年7月12日)

      周四要给工作室的小朋友们继续培训计算机网络,要讲的内容是传输层,于是今天就在准备相应的材料,重新看回谢希仁老师的课本过程中又加深了一点理解,然后看到了当时碰到的第一个难点,UDP协议的校验和的计算

      其实本质上来说这个计算原理还是不难的,就是一个二进制反码求和运算,具体来说就是:$$0+0=0$$ $$1+0=0+1=1$$ $$1+1=10$$

      其中10中的1加到了下一列去,如果是最高列的1+1,那么得到的10留下0,1移到最低列,与最低位再做一次二进制加法即可。

      在谢老师的这本书里,讲到的是一个15字节的UDP数据在发送方怎么进行数据的检验,然后列出了一个二进制的竖式并给出一个结果,然而并没有讲述是怎么计算出来的。经过我不断的努力,终于把二进制计算的过程整个写出来了。之前在数计院上课的时候,老师讲过一个较为之简单的十六进制计算法,对比之下确实是简单很多。好了,先上图。

     

     

      谢老师在课本里面给出的题目是这样子的。

    二进制版
    1001 1001 0001 0011 //伪首部源IP地址前16位
    0000 1000 0110 1000 //伪首部源IP地址后16位
    1010 1011 0000 0011 //伪首部目的IP地址前16位
    0000 1110 0000 1011 //伪首部目的IP地址后16位
    0000 0000 0001 0001 //伪首部UDP协议字段代表号17,前面8位是填充0
    0000 0000 0000 1111 //伪首部UDP长度字段
    0000 0100 0011 1111 //UDP头部源IP地址对应的进程端口号
    0000 0000 0000 1101 //UDP头部目的IP地址对应的进程端口号
    0000 0000 0000 1111 //UDP头部UDP长度字段
    0000 0000 0000 0000 //UDP头部UDP检验和
    0101 0100 0100 0101 //数据字段
    0101 0011 0101 0100 //数据字段
    0100 1001 0100 1110 //数据字段
    0100 0111 0000 0000 //数据字段+填充0字段
       
    十六进制版
    9913        //伪首部源IP地址前16位
    0868        //伪首部源IP地址后16位
    AB03        //伪首部目的IP地址前16位
    0E0B        //伪首部目的IP地址后16位
    0011        //伪首部UDP协议字段代表号17,前面8位是填充0
    000F        //伪首部UDP长度字段
    043F        //UDP头部源IP地址对应的进程端口号
    000D        //UDP头部目的IP地址对应的进程端口号
    000F        //UDP头部UDP长度字段
    0000        //UDP头部UDP检验和
    5445        //数据字段
    5354        //数据字段
    494E        //数据字段
    4700        //数据字段+填充0字段
    

     

      在二进制版中,是不可以直接从右边第一列开始做竖式相加的,不要说十进制的竖式相加,二进制的竖式相加都做不到。

          正确的做法是:
          (1) 让第一行和第二行做二进制反码运算。
          根据上述的规则,当碰到1+1=10时,在左邻侧一列下面写个小1(类似以前做十进制进位加法),然后侧列进行二进制反码运算得出一个数,如果没有进位,就继续与刚才的进位做二进制反码运算,如果有进位,则先把进位的小1写在相邻高侧列的下方,取个位来与其相加。有进位的只有1+1=10的情况,0不论加什么进位都不会有进位,而如果第一次计算没有进位时,只有产生1的情况下才会有进位,总而言之,对于每一列,都只会有至多一次的进位,所以不用担心进位会跨列的问题。这样子做要注意的就是不要写错数字了,比如我自己在写这张纸之前已经打过两次草稿了,然而还是会写错。
          对于高位有1的情况,就是把1挪到最低位,再做一次二进制反码计算,本质来说就是取补码。
          (2) 将第一行和第二行的结果与第三行做二进制反码计算,以此类推。
          (3) 运算结果取反,得到校验和。

          在十六进制版中,运算量会大大减小,主要的计算步骤如下:
          (1) 从右边第一列开始,按照十进制来计算第一列的值。
          在这里第一列算出来是107,写成8位二进制就是01101011。
          (2) 根据算出来的结果分成两部分,左边的4位化成十进制,作为下一列进位时加的数,右边4位化成16进制,作为第一列的结果。
          这里就是610B16,图片误算成D,6作为下一列运算时要加上的对象,B作为第一列的结果。
          (3) 十进制计算第二列的结果,加上第一列得到的进位得到第二列的一个十进制数字,化为二进制,根据第二步来进行判断,依次类推。
          在这里第二列算到的是24,加上6就是30,化为8位二进制就是00011110,也就是1E,第二列的结果为1,第三列的十进制进位为1。接着可以算到第三列的结果为6,十进制进位为4。
          (4) 最高位算出最后的十进制结果后,化为二进制时,右边4位作为最终结果,左边4位移入下一列,用上一步得到的结果96EB,加上0010,得到最后结果,这里图片的最后一步写错了,不应该舍弃。
          最后能得到结果为96ED。
          (5) 结果取反,得到校验码。
          校验码为6912。

          好了这次先针对这个特定的问题提出了解决方案,有时间要好好整理下关于计算机的原码、反码和补码的知识。

    转载于:https://www.cnblogs.com/jcchan/p/10400504.html

    展开全文
  • 二进制原码 反码 补码、二进制运算二进制移位运算
  • 1. 二进制最高位是符号位:0正1负 2. 对于正数,负数和零 正数:三码一样 负数: 反码 = 原码符号位不变,其他位取反 补码 = 反码+1 反码 = 补码-1 零:三码都是零 3. 计算机在内部计算的时候用的是补码(因为补码...
  • 参考链接二进制反码求和UDP 检验和的回卷是什么意思?Python 计算 UDP 检验和目录1. 前言说明2. 例子分析3. 相关代码4. 结果展示5. 心得总结一、前言说明 ↶在看完教材 5-50 题目的习题解答,稍微懂了一点二进制反码...
  • 二进制反码的计算

    万次阅读 多人点赞 2018-06-05 21:26:35
    1.反码运算时,其符号位与数值一起参加运算。2.反码的符号位相加后,如果有进位出现,则要把它送回到最低位去相加(循环进位)。3.用反码运算,其运算结果亦为反码。在转换为真值时,若符号位为0,数位不变;若符号...
  • 计算机网络二进制反码求和校验算法

    千次阅读 多人点赞 2017-12-24 12:01:53
     另外,关于二进制反码求和运算需要说明的一点是,先取反后相加与先相加后取反,得到的结果是一样的。 2、校验和算法实现  代码如下:  USHORT checksum (USHORT *buffer,int size)  { ...
  • 二进制反码求和

    千次阅读 2017-08-15 17:27:18
    在看TCP/IP 时,看到IP 协议中有个 首部检验和 是用的 二进制反码求和。 不太理解,上网搜到了一个答案,记载下面。 以4bit(计算方便一点,和16bit是一样的)做检验和来验证。  假设原始数据为 1100 ,...
  • 二进制反码求和校验算法

    万次阅读 多人点赞 2015-09-07 17:22:12
    二进制反码求和校验算法  经常看计算机网络相关的书时,每次看到关于IP或者是UDP报头校验和时,都是一笑而过,以为相当简单的东西,不就是16bit数据的相加吗!最近在学习Ping命令的源待时,看到里面有关于校验和的...
  • 首先,数在计算机中是以二进制形式...一、二进制反码求和 规则: 从低位到高位逐列进行计算。0和0相加是0,0和1相加是1,1和1相加是0但要产生一个进位1,加到下一列。 即0+0=0;0+1=1;1+1=10。 如果最高位相加...
  • 二进制反码求和校验码算法

    千次阅读 2018-01-06 16:31:07
    校验和算法 经常看计算机网络相关的书时,每次看到关于IP或者是UDP报头校验和时,都是一笑而过,以为相当简单的东西,不就是16bit数据的相加吗...一头雾水,后来查找资料,看到校验和是16bit字的二进制反码和。总是觉
  • 百科说,0和0相加是0但要产生一个进位1,0和1相加是1,1和1相加是0.若最高位相加后产生进位,则最后得到的结果要加1。听着挺简单,但实际根本不懂,能帮我举个具体的运算例子吗?谢谢
  • 二进制原码、反码、补码

    千次阅读 2021-11-30 08:25:50
    文章目录1、有符号数和无符号数2、二进制的原码、反码、补码原码反码补码小结举个栗子:3、思考:java中为什么byte的取值范围是-128~1274、Java中的<< 和 >> 和 >>> 1、有符号数和无符号数 其实...
  • IP数据报二进制反码求和算法

    千次阅读 2019-02-19 16:01:56
    然后,对首部(20字节)中每个16bit进行二进制反码求和,结果存在校验和字段中.当收到一份IP数据报后,同样对首部中每个16bit进行二进制反码求和.接收方在计算过程中包含发送方存在首部中的校验和,如果首部传输正确,那么...
  • 二进制运算(原码、反码、补码)

    千次阅读 2020-08-01 13:04:47
    二进制运算(正码、反码、补码) 机器数(机器存储的数) ​ 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1 //比如byte类型...
  • 二进制数  二进制数分为有符号数和无符号数。对于有符号位二进制数,最高位表示正负数,最高位1表示负数,最高位是0则表示正数。如一个8位的有符号位二进制数 1000 0001 最高是1则表示一个负数(-1) ,如果1000 ...
  • 二进制运算方法

    千次阅读 2021-07-18 03:47:38
    二进制运算原理,大家都知道,不外乎,除2取余和乘2取整。这种费时、费力的方法,这里就不说了。考试讲究的时间,所以要找些简便的方法,必要时还是要记一下“二进制的变化形”,做到一看二进制数就知道其的十进制是...
  • 二进制补码和反码和源码的关系 一:为什么会有二进制原码反码补码 我们知道,一个数在计算机中使用二进制来表示的。以下都用一个字节来表示二进制的存储。例如:+1表示成二进制为00000001,-1表示成二进制为...
  • 理解 UDP

    2021-03-18 12:15:45
    UDP 和 TCP 的不同 TCP 在传送数据之前...0100 1001 0100 1110 //数据字段 0100 0111 0000 0000 //数据字段+填充0字段 按照二进制反码运算求和,结果:10010110 11101101 结果求反码得出校验和:01101001 00010010 参考
  • 二进制常用运算方式和基本概念
  • 二、二进制的加减运算 十进制是逢十进一,二进制是逢二进一,十进制的世界单个数字最大为9,二进制的世界单个数字最大为1。 10010011 10101001 ---------------- 100111100 思考一个问题,计算机只能保存0和1...
  • 文章目录1.1、真值、机器数(原码、反码和补码)查看 32位二进制补码 小工具1.2、与(&)、或(|)、异或(^)、非(~)运算异或运算的规律和应用1.3、位移运算 <<、>>和>>> 1.1、真值、机器数...
  • 二进制数的反码和补码

    千次阅读 2019-01-16 22:12:54
    在大学的学习中,一开始自认为已经学会了反码与补码,但在看到多种表述之后,...首先从最一般的意义上,分别说一下二进制反码和补码: 1、反码 1’s complement 把所有的0变为1,所有的1变为0。 如: 10110010 B...
  • 二进制运算

    2022-03-23 16:24:54
    位运算符:&,|,^,~ , >>,<<,>>> 如何区分逻辑运算符和位运算符: 逻辑运算符:左右连接的是布尔类型的操作数 ...原码:先求出该数字的二进制,最高位为1,表示该数为负数

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,983
精华内容 11,193
关键字:

二进制反码运算

友情链接: DevilYuan-master.zip