精华内容
下载资源
问答
  • 二进制反码运算

    万次阅读 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

    展开全文
  • 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

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

    千次阅读 多人点赞 2019-09-02 17:53:51
    UDP协议的校验和的计算。  其实本质上来说这个计算原理还是不难的,就是一个二进制反码求和运算,具体来说就是: 0+0=0;0+0=0 1+0=0+1=1;1+0=0+1=1 ...

    UDP协议的校验和的计算

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

                                              0+0=0;0+0=0

                                              1+0=0+1=1;1+0=0+1=1

                                              1+1=10;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。

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

    展开全文
  • 百科说,0和0相加是0但要产生一个进位1,0和1相加是1,1和1相加是0.若最高位相加后产生进位,则最后得到的结果要加1。听着挺简单,但实际根本不懂,能帮我举个具体的运算例子吗?谢谢
  • 原码:符号位0表示正数,符号位1表示负数。 补码:正数的补码等于原码,负数...反码:正数的反码等于原码,负数的反码等于原码每一位取反。 例如:带符号位10011010(-26)的反码和补码分别为11100101和11100110。 ...

    原码:符号位0表示正数,符号位1表示负数。
    补码:正数的补码等于原码,负数的补码等于它的反码加1.
    反码:正数的反码等于原码,负数的反码等于原码每一位取反。
    例如:带符号位10011010(-26)的反码和补码分别为11100101和11100110。

    展开全文
  • checksum二进制反码求和计算方法: ip报文:将首部不包含数据,分成多个16位字的序列,将检验和置零,然后进行反码算术运算把所有16位字相加后,将得到的 和的反码 写入检验和字段。接收方接收到后,再按照16位字的...
  • 二进制反码的计算

    千次阅读 2018-06-05 21:26:35
    1.反码运算时,其符号位与数值一起参加运算。2.反码的符号位相加后,如果有进位出现,则要把它送回到最低位去相加(循环进位)。3.用反码运算,其运算结果亦为反码。在转换为真值时,若符号位为0,数位不变;若符号...
  • 源码 原码就是符号位加上真值的绝对值, 即用第一位表示... 因为第一位是符号位, 所以8位二进制数的取值范围就是: [1111 1111 , 0111 1111] 即 [-127 , 127] 反码 正数的反码是其本身 负数的反码
  • 二进制数  二进制数分为有符号数和无符号数。对于有符号位二进制数,最高位表示正负数,最高位1表示负数,最高位是0则表示正数。如一个8位的有符号位二进制数 1000 0001 最高是1则表示一个负数(-1) ,如果1000 ...
  • 二进制运算 首先讲到的是十进制转化为二进制,因为以人类的思维观是十进制的。生活中,十进制的计数值早已经习惯了我们的生活,但在计算机领域,十进制是行不通的,在早期的晶体管中,只有高低电平两种状态之分。...
  • 在网上搜到的一个方法,对于IP与TCP的检验和运算,时常会遇到十多个十六位二进制数的反码运算,可以把它转换成十六进制进行相加,这样会大幅度的减少运算量。 打比方现在有三个十六位的二进制数: 二进制数 ...
  • 在计算机中,原码、反码以及补码是为了区分正数与负数的表达与运算设计出来的 一、原码 在原码中即把数字直接转换为二进制,其中第一位为符号位(符号位0代表整数,符号位1代表负数),其余为该数的二进制原码;例如...
  • 二进制运算

    2017-11-05 13:24:09
    1.原码 反码 和 补码 二进制位元算包括按位与、按位或、...如果其他进制,比如最常见的十进制要进行二进制运算,那么先得把十进制数转成二进制数 在了解二进制运算之前,就要先掌握进制转换,那么先来复习一下
  • 在计算机系统中,数值一律使用补码来表示和存储。... 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。比如,十进制...
  • 用最高位的二进制位表示符号。0 = 正数,1 = 负数。 正数的原码就是其二进制位本身。 负数的源码是对应绝对值的二进制位,但是最高位变为1。 源码存在的问题是存在正0和负0的问题,虽然+0 = -0,但是它们无法在...
  • 二进制取反运算

    千次阅读 2020-06-27 16:59:27
    1、关于二进制表示 1、正数补码 2、负数补码 3、取反运算 1、关于二进制表示 这里有几个概念,关于原码、补码和反码 补码:在计算机系统中,数值一律用补码来表示(存储) (正数的补码是其原码。例如十进制...
  • 学习背景:最近在看很多JAVA类的源码,遇到了很多的位运算,所以系统的学习了下有关二进制的知识。 首先,看一下JAVA中的基本数据的字节(Byte)长度和bit长度: 基本数据类型 字节Byte bit byte 1字节 8位 ...
  • 二进制相关运算

    2020-04-18 10:36:40
    二进制,原反补移码 一般的 正数:+101(符号位0) 原码: 0101,正数的原码为取绝对值的数转二进制 |X| 反码: 0101 补码: 0101 移码: 1101 正数的原反补一样,移码符号位取反 负数: -111(符号位1) 原码...
  • 二进制运算---左移右移

    千次阅读 2019-11-11 22:03:47
    二进制运算---左移(<<)右移(>>) (1).二进制中负数的计算 负数以正数的补码表示 原码:一个整数按照绝对值的大小转化成二进制的数 反码:将二进制数按位取反 补码:反码加 1 以-14 举例 原码...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,611
精华内容 644
关键字:

二进制反码运算