精华内容
下载资源
问答
  • 详细介绍JAVA中原码,补码反码的概念,对于初学者有较好的帮助。
  • 原码,反码,补码基本概念机器数原码反码补码反码补码用途数学原理 基本概念 机器数 机器数是计算机中的二进制表示形式, 机器数是带符号的 原码 原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值 ...

    基本概念

    机器数

    机器数是计算机中的二进制表示形式, 机器数是带符号的

    原码

    原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值

    反码

    正数的反码是其本身
    负数的反码是在其原码的基础上,符号位不变,其余各个位取反

    补码

    正数的补码就是其本身
    负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1

    反码补码用途

    [+1] = [0000 0001]原= [0000 0001]反= [0000 0001]补

    [-1] = [1000 0001]原= [1111 1110]反= [1111 1111]补

    目的: 机器可以只有加法而没有减法,这样计算机运算的设计更简单

    1. 用反码计算减法,结果的真值部分是正确的, 出现了反码:
        1 - 1 = 1 + (-1) = [0000 0001]原+ [1000 0001]原 = [0000 0001]反+ [1111 1110]反
              =  [1111 1111]反 = [1000 0000]原 = -0
       问题: 出现了 +0 和 -0 
    2. 补码的出现,解决了0的符号问题以及0的两个编码问题
        1 - 1 = 1 + (-1) = [0000 0001]原+ [1000 0001]原 = [0000 0001]补 + [1111 1111]补
              =  [1 0000 0000]补 = [0000 0000]补
    3. 补码的出现增加一个值, 可以用[1000 0000]表示-128
        (-1) + (-127) = [1000 0001]原+ [1111 1111]原= [1111 1111]补+ [1000 0001]补= [1000 0000]补
    

    数学原理

    1. 同余操作

      两个整数a,b,若它们除以整数m所得的余数相等,则称a,b对于模m同余
      记作 a ≡ b (mod m), 读作 a 与 b 关于模 m 同余。

      例如:
      4 mod 12 = 4
      16 mod 12 = 4
      所以4,16 对于模 12 同余。

      定理
      同余数的两个定理:
        (1) 反身性:
          a ≡ a (mod m)
        (2)线性运算定理:
          如果a ≡ b (mod m),c ≡ d (mod m) 那么:
          1) a ± c ≡ b ± d (mod m)
          2) a * c ≡ b * d (mod m)
            得到:
              7 ≡ 7 (mod 12)     (-2) ≡ 10 (mod 12)
              --> 7 -2 ≡ 7 + 10 (mod 12)

      一个数的反码,实际上是这个数对于一个模的同余数。而这个模并不是我们的二进制,而是所能表示的最大值!这就和钟表一样.

      其实,在反码的基础上+1,只是相当于增加了模的值:

    2. 负数取模操作

      x mod y = x - y * [ x / y ] (注释: 取x与y的商的下界, ,除法取整)

    展开全文
  • 反码补码作用和意义

    千次阅读 2018-08-07 11:33:15
    https://zhidao.baidu.com/question/536424181.html
    展开全文
  • 原码反码补码

    千次阅读 2021-01-29 16:52:17
    (即在反码的基础上+1) [+1] = [00000001]原 = [00000001]反 = [00000001]补 [-1] = [10000001]原 = [11111110]反 = [11111111]补 对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算...

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

     

     


    提示:以下是本篇文章正文内容,下面案例可供参考

    一、原码

    1.机器数

    一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。

    比如:十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。那么,这里的 00000011 和 10000011 就是机器数。

    2.真值

    因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3 而不是形式值131(10000011转换成十进制等于131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。

    例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1

    3.原码

    原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:

    [+1]原 = 0000 0001
    [-1]原 = 1000 0001
    第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:[1111 1111 , 0111 1111]
    即[-127 , 127]。原码是人脑最容易理解和计算的表示方式,跟机器数是一样的。


    二、反码

    反码的表示方法是:正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。

    [+1] = [00000001]原 = [00000001]反
    [-1] = [10000001]原 = [11111110]反

    可见如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算.


    三、补码

    对补码的解释一般是"对负数的绝对值按位取反再+1"。

     

    补码的表示方法是:

    正数的补码就是其本身

    负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

    [+1] = [00000001]原 = [00000001]反 = [00000001]补
    [-1] = [10000001]原 = [11111110]反 = [11111111]补

    对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值。

    1.在不考虑符号位的情况下

    在没有符号位的情况下,负数无法用原码表示。

    对于补码,更本质的解释是:对于负数-x,"若数据类型为n个二进制位,则补码为2^n-x" 。也就是说,这个补码其实就是-x,只不过是对2^n取模之后的-x 。这样就能理解,为什么减去一个数等于加上这个数的补码,因为补码无非是这个数在模意义下的相反数。比如在四位的情况下,-1 对2^4取模为15,用二进制表示即为 1111 ,列举几种情况:

    1.计算的结果为正,如3 - 2,用补码表示为:0011 + 1110 ,结果为 1 0001,即为2^4 + 1,溢出了一位,不考虑,即结果为1。

    2.计算的结果为负,如2-3,用补码表示为:0010 + 1101,结果为 1111 ,即为2^4-1,即原值为-1。

    2.在考虑符号位的情况下

    用四位可以表示0000~1111,最高位为符号位,对于一个负数-2,原码表示为1010,补码表示为1110,可以发现和不考虑符号位的补码是一样的,1-2 用原码表示为 0001 + 1010,用补码表示为0001 + 1110,结果为1111(补),即2^4-1,那么原值为-1,用原码表示为1001。

    总结

    其实补码就是一种映射,将负数映射到最高位为1的区间,因为对于负数来说,负数和映射之后的结果的性质是一样的,比如在四位的情况下,1001的补码为1111,2-1 补码结果为1 0001,去掉溢出即为1,1-2 补码结果为 1111,也就是补码的-1。

    最重要的是,计算机可以直接使用补码进行二进制运算,不需要在意符号位。

    展开全文
  • 三、作用 由上可见原码,反码补码是完全不同的。既然原码才是被人脑直接识别并用于计算表示方式,为何还会有反码补码呢? 首先, 因为人脑可以知道第一位是符号位,在计算的时候我们会根据符号位,选择对真值...

    一、概念简述

    机器码:一个数在计算机中的二进制形式,机器码是带符号的,在计算机用机器码的最高位存放符号,正数为0,负数为1。
                  如 0000 0011 和 1000 0011。
    机器码的真值:机器码除符号位剩下的真正数值。
                  如 0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1。
    原码:数值的二进制表示形式,用来转换对应的进制。
                  如:    [+1]原= 0000 0001
                              [-1]原= 1000 0001
    反码:符号位不变,进制码0变1,1变0叫做反码,反码用于原码补码之间的转换。
                  如:    [+1] = [0000 0001]原= [0000 0001]反,
                             [-1] = [1000 0001]原= [1111 1110]反
    补码:反码加1,用来做数据的存储运算。
                  如:    [+1] = [0000 0001]原= [0000 0001]反= [0000 0001]补
                             [-1] = [1000 0001]原= [1111 1110]反= [1111 1111]补

    二、运算规则

    (原码 反码 补码之间的转换 , 符号位不要动)
    正数: 原码 = 反码 = 补码
    负数: 原码 = 补码取反加1   给补码求原码
    负数: 补码 = 原码取反加1   给原码求补码

    可以看出,反码用于原码与补码之间的转换。

    三、作用

    由上可见原码,反码和补码是完全不同的。既然原码才是被人脑直接识别并用于计算表示方式,为何还会有反码和补码呢?

    首先, 因为人脑可以知道第一位是符号位,在计算的时候我们会根据符号位,选择对真值区域的加减。但是对于计算机,加减乘除已经是最基础的运算,要设计的尽量简单,计算机辨别"符号位"显然会让计算机的基础电路设计变得十分复杂!

    于是人们想出了将符号位也参与运算的方法。我们知道,根据运算法则减去一个正数等于加上一个负数,即:1-1 = 1 + (-1) = 0, 所以机器可以只有加法而没有减法,这样计算机运算的设计就更简单了。

    于是人们开始探索将符号位参与运算,并且只保留加法的方法。

    四、运算例子

    求10 +(- 12) = ? 
    补码用来做数据的存储运算,因此先求10和-12的补码
    10的补码(=反码=原码):0000 1010(高位为0,表示正数)
    
    -12的原码: 1000 1100 (高位为1,表示负数,转换为10进制时,高位的1不用进行换算) 
         反码: 1111 0011 (原码取反) 
         补码: 1111 0100 (反码加1)
    
    补码做相加运算
     10的补码: 0000 1010
    
    -12的补码: 1111 0100
             -------------
    结果(补码): 1111 1110
    
    补码再转换为原码(即补码的补码,同样做取反加1换算)
    补码:   1111 1110(高位为1,表示负数,进行补码反码原码换算时是不变的)
    
    反码:   1000 0001(补码取反)
    原码:   1000 0010(反码加1)
    10进制: -2
    
    

    参考:https://zhuanlan.zhihu.com/p/91967268?utm_source=wechat_session

    展开全文
  • 原码、反码补码都是有符号定点数的表示方法。一个有符号定点数的最高位为符号位,0是正,1是副。以下都以8位整数为例,原码就是这个数本身的二进制形式。例如0000001 就是+11000001 就是-1正数的反码补码都是和...
  • 原码 反码 补码的简单计算附例题

    千次阅读 2020-07-01 17:31:02
    原码 反码 补码 对计算机中常见数据简单分类 机器数 与 真值 原码 反码 补码 扩展 对计算机常见数据的分类 机器数 就是数值在计算机中的二进制表现形式 机器数在计算机中有符号,使用 最高位表示符号 , 使用0 表示...
  • 原码、反码补码

    2016-09-17 09:09:11
    原码、反码补码
  • 但是对于负数,其原码、反码补码是完全不同的,既然原码才是被人脑直接识别并用于计算表示方式,为何还会有反码补码呢? 首先,希望能用符号位代替减法 首先,因为人脑可以知道首位是符号位,在计算的时候我们会...
  • 二进制 原码 反码 补码

    千次阅读 多人点赞 2019-12-23 17:56:15
    1、原码,反码补码概念 正数:原码、反码补码相同; 以123为例: 原码:01111011 反码:01111011 补码:01111011 负数的原码:为取绝对值的数转二进制,然后符号位加一; 负数的反码:对该数的原码除符号...
  • 8位表示一个数字,范围是0~127,那么负数怎么办,这时候有人提出把第一位当做符号位,那么范围从11111111 - 01111111 是 -128 ~127,那么11111111明明是-127为什么书上却说是-128呢,这里需要知道反码补码的概念,...
  • 负数的补码=反码末位+1(要考虑进位)移码:补码的基础上,符号位取反(只能表示整数) 用加法运算来代替减法运算例如:14-14 这个运算,如果在8bit的基础上,可以看成计算机天然的对所有的数 进行了mod 2^8这样的运算,模...
  • 计算机中的符号数有三种表示方法,即原码、反码补码。 原码、反码补码定义: 原码:如果机器字长为n,那么一个数的原码就是用一个n位的二进制数,其中最高位为符号位:正数为0,负数为1。剩下的n-1位表示概数...
  • [-3]反=[10000011]反=11111100 原码 反码 负数的补码是将其原码除符号位之。两个说法都没有错,我们举个例子来看看就明白了:1、10001的补码是取反后在再加1,也就是11110+1=11111;2、如果是11111变回原码呢?我们...
  • 浅谈 -128的原码 反码 补码

    千次阅读 2020-12-25 18:13:29
    以java中byte表示:2字节 8位,-128 首先首位1表示负数,128的正数为1000 0000(其实是-128),然后拼接为1 1000 0000,大于8位,则...就是-128 就是所谓的-0,但是这里表示的-128 因为-0 +0补码表示是一样的所以使用00
  • 为什么计算机要使用反码/补码

    千次阅读 2021-02-19 00:52:04
    反码作用就相当于数学中的负数。 对于小学生来说,会做的算术题是:5-3,但是不会做3-5。于是,我们上初中的时候,数学里就引进了一个新的概念:负数。引入负数之后,本来是减法的运算就可以变成加法来实现: 3-...
  • Python 原码反码补码

    2021-05-26 15:46:47
    摘要:https://blog.csdn.net/aic1999/article/details/80102433
  • (1变0,0变1) 补码: 由来:虽然反码的出现解决了正负数的加减问题, 但却让0这个数字有了两种"形态": "0"和"-0", 但这是不合逻辑的,只应该有一个0,所以人们就又发明了补码. 在反码的基础上补一位就得到了补码, 但有失...
  • 正整数的原码反码补码都是相同的 负整数,例如 -1: 原码100000000000000000000000000000000001 首位是字符位,负数取1,正数取0 反码111111111111111111111111111111111110 较于原码除字符位,其余位置取反 ...
  • 原码反码补码详解

    2018-08-20 09:32:26
    在学习原码, 反码补码之前, 需要先了解机器数和真值的概念. 1.机器数:一个数在计算机中的二进制表示形式, 叫做这个数的机器数。 2.真值:机器数的实际值称为真值。  3.符号数和无符号数  符号数和无符号数...
  • 原码反码补码的转换方法

    千次阅读 2021-05-13 17:11:39
    注意:下面内容中的数字均用8位二进制数表示。 原码 最高位(最左边)代表符号位,0代表正数,1代表负数。 例:  ...负数的补码是该数的反码加1。 计算机数字运算均是基于补码的。 单字
  • 原码 反码 补码 之间在小数正数间的转换 基本转换 对于正数 原码等于反码等于补码(小数也一样) 对于负数 原码除了符号位取反即反码 反码基础之上+1即补码 但是在遇到某些题时候还是会混淆,比如三者在对+0,-0方面...
  • 原码 反码 补码 练习

    2018-01-05 11:55:00
    总结以上内容:正数的原码、反码补码形式一致,负数的反码为原码的数值位取反,补码反码+1也即是原码的数值位取反再+1, 计算机中以补码表示数据和运算,而32位最小负整数的补码为 1000 0000 0000 0000 0000 ...
  • 记忆和转换原码、反码补码和移码其实很简单,方便的认识四种码。
  • 在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以用补码统一处理。 原码:使用二进制表示,二进制首位是符号位,0为正,1为负 反码:正数...
  • 需要遵守原码 反码 补码的规则 原码 反码 补码规则 原码:最高位符号位,对其它的为进行本身绝对值即可。 反码: 正数:反码和原码相同 负数:符号位一定是1,其余位对原码取反。 补码: 正数:补码和原码相同 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,903
精华内容 14,361
关键字:

反码补码的作用