原码反码补码计算机原理详解

作者&投稿:坚翁 (若有异议请与网页底部的电邮联系)
~

本文简单总结了原码、反码、补码的计算以及由来。

 

机器数和真值机器数

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

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

真值

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

原码、反码、补码的基础概念和计算方法

原码、反码、补码是机器存储一个具体数字的编码方式。

原码

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

    [+1]原 = 0000 0001 [-1]原 = 1000 0001

    因为第一位是符号位,所以 8 位二进制数的取值范围就是:[1111 1111 , 0111 1111],即 [-127 , 127]。

    原码是人脑最容易理解和计算的表示方式。

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

      下面是一个例子:

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

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

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

          下面是一个例子:

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

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

            原码、反码、补码的由来

            人脑可以知道第一位是符号位,在计算的时候我们会根据符号位,选择对真值区域的加减。但是对于计算机,加减乘数已经是最基础的运算,要设计的尽量简单。计算机辨别” 符号位” 显然会让计算机的基础电路设计变得十分复杂!于是人们想出了将符号位也参与运算的方法。我们知道,根据运算法则减去一个正数等于加上一个负数,即: 1 - 1 = 1 + (-1) = 0。因此,机器可以只有加法而没有减法,这样计算机运算的设计就更简单了。

            原码:

            正数 正数(原码) 负数 负数(原码) 0 0000 0 1000 1 0001 -1 1001 2 0010 -2 1010 3 0011 -3 1011 4 0100 -4 1100 5 0101 -5 1101 6 0110 -6 1110 7 0111 -7 1111

            我们希望 + 1 和 - 1 相加是 0,但计算机只能算出 0001+1001=1010 (-2)。

            为了解决 “正负相加等于 0” 的问题,在 “原码” 的基础上,人们发明了 “反码”:

            正数 正数(反码) 负数 负数(反码) 0 0000 0 1111 1 0001 -1 1110 2 0010 -2 1101 3 0011 -3 1100 4 0100 -4 1011 5 0101 -5 1010 6 0110 -6 1001 7 0111 -7 1000

            当 “原码” 变成 “反码” 时,完美的解决了 “正负相加等于 0” 的问题,过去的 + 1 和 - 1 相加,变成了 0001+1101=1111,刚好反码表示方式中,1111 象征 - 0。

            人们总是进益求精,历史遗留下来的问题 —— 有两个零存在,+0 和 -0。我们希望只有一个 0,所以发明了” 补码”,同样是针对” 负数” 做处理的。从原来” 反码” 的基础上,补充一个新的代码,(+1)。

            正数 正数(补码) 负数 负数(补码) 0 0000 0 0000 1 0001 -1 1111 2 0010 -2 1110 3 0011 -3 1101 4 0100 -4 1100 5 0101 -5 1011 6 0110 -6 1010 7 0111 -7 1001     -8 1000

            有得必有失,在补一位 1 的时候,要丢掉最高位。我们要处理” 反码” 中的”-0”,当 1111 再补上一个 1 之后,变成了 10000,丢掉最高位就是 0000,刚好和左边正数的 0 完美融合。这样就解决了 + 0 和 - 0 同时存在的问题。

            另外” 正负数相加等于 0” 的问题,同样得到满足,举例,3 和(-3)相加,0011 + 1101 =10000,丢掉最高位,就是 0000(0)。

            以上就是” 补码” 的存在方式。





计算机源码,反码,补码之间怎么计算?
1、正整数的原码、反码、补码完全一样,即符号位固定为0,数值位相同。2、负整数的符号位固定为1,由原码变为补码时,规则如下:原码符号位1不变,整数的每一位二进制数位求反,得到反码;反码符号位1不变,反码数值位最低位加1,得到补码。3、例如正整数的原码为01110110,则反码和补码也为...

什么是原码 补码 反码
引入原码 反码 和补码的目的就是为了解决减法问题,因为计算机CPU的运算器中只有加法器,要把减法转化成加法来计算.举个例子,A表示十进制数“+16”,B表示十进制数“-19”,把这两个数的原码直接相加,得:A=+16 (A)原=00010000 B=-19 (B)原=10010011 00010000 + 10010011 ———10100011 ...

什么是原码 补码 反码
有符号数,有三种表示方法,即原码、反码和补码。在计算机系统中,数值一律用补码来表示和存储。在计算机系统中,原码和反码,都是不存在的。=== 数值 0,在八位机中,就是 0000 0000。+1,就是加上一,即为:0000 0001。+2,就再加上一,即为:0000 0010。其他正数,依次递增即可。。。

补码,原码,反码什么的。有什么作用啊!
作用如下:1、补码:解决负数加法运算正负零问题,弥补了反码的不足。2、原码:可直观反映出数据的大小。3、反码:解决负数加法运算问题,将减法运算转换为加法运算,从而简化运算规则。

原码,补码,反码都是什么意思,怎么算啊
反码、和补码:3的原码:00000011 -3的原码:10000011 也就是最左边的那个数表示正负,0代表正,1代表负,它也叫符号位 -3的原码:10000011 -3的反码:11111100 负数的反码是对其原码按位取反,符号位不变 -3的补码:11111101 负数的补码是在其反码的末位加1 计算机用补码计算 ...

原码反码补码是多少
+35:原码=反码=补码=0100011 -35:原码:1100011;反码:1011100;补码:1011101;

深入浅出:原码,反码,补码及减法
原码,反码,补码及减法介绍如下:众所周知,计算机内部是以二进制存储数据的,对于不同的数据类型可能存储的格式含义不一样。例如有符号整数,最高位是符号位,其余代表数值;那么它在计算机里要怎么运算表达呢,下面来一步步说一下:举个例子,1+1怎么表达呢?1的二进制表达为(为了方便用1个字节表示)...

在电脑中的原码,反码,补码都是什么意思啊
对0有两种表示形式: [+0]原=00000000 [-0] 原=10000000 2、补码的定义 机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。设有一数X,则X的补码表示记...

计算机占8位-56的原码反码补码
-56 原码10111000 反码11000111 补码11001000 第一位是符号位,1表示负数 将57变为二进制,因为二进制数从右到左第七位到第一位分别代表十进制数的64,32,16,8,4,2,1,而32<57<64,所以57的二进制表示为111001。根据8位机器数得到-57的真值为-111001,原码为10111001。正值的反码不变,负值...

计算机的原码,反码,补码。 写出+89、-98的8位原码、反码、补码。 求详...
+89是正整数, 正整数的原码反码补码都一样故为89的二进制表示:01011001 -98是负数, 原码是98的二进制表示的最高位的0改为1, 98的二进制表示是01100010 最高位的0改为1则是: 11100010(最高位符号位, 0表示正数, 1表示负数)其反码为-98的原码的除符号位(最高位)以外的所有位取反,...

无极县18048151212: 计算机组成原理:原码,补码,反码,移码之间的关系? -
壤尝重组: 所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小. 反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外. 补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1.

无极县18048151212: 原码、反码、补码 -
壤尝重组: 请我给你的详解:原码、补码和反码(1)原码表示法原码表示法是机器数的一种简单的表示法.其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示.设有一数为x,则原码表示可记作〔x〕原.例如,X1= +1010110X2= 一...

无极县18048151212: 计算机的原码,反码,补码是怎么回事?可以举例说明吗?
壤尝重组: 计算机以二进制补码存储数据 以16位机器为例: 比如83的二进制码为:0000 0000 0101 0011 由于正数的源码、反吗、补码,上面的既是源码,也是反码和补码 下面通过负数讲解源码、反码、补码之间的关系 以-83为例 先求出-83绝对值的源...

无极县18048151212: 原码、反码、补码的产生、应用以及优缺点有哪些? -
壤尝重组: 1、 原码:是机器数的一种简单的表示法.其符号位用0表示正号,用1表示负号,数值一般用二进制形式表示.优点:最简单直观.缺点:不能直接参加运算,可能会出错.原码来历:在机器中,只能识别二进制数字,所以所以的数字都用...

无极县18048151212: 总结原码,反码和补码的表示方法和运算规则.为什么在计算机中大多采用补码 -
壤尝重组:[答案] (1)原码、反码、补码表示的简易记忆法:正数的原码、反码、补码相同正数符号位为0,负数符号位为1原码, 除符号位外的数值位与真值相同负数的反码 =原码(除符号位外)每位取反;负数的补码 = 反码 + 1; (2)运算...

无极县18048151212: 如何理解二进制原码,反码,补码,二进制补码运算 -
壤尝重组: 1.基础概念和计算方法 在探求为何机器要使用补码之前, 让我们先了解原码, 反码和补码的概念.对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式.http://blog.csdn.net/yinyhy/article/details/8732118

无极县18048151212: 什么是原码,补码和反码 -
壤尝重组: 原码就是题目给你的010011001这种二进制码,反码就是把原码的0变1,1变0,如101100110,补码就是反码加1,就是101100111我觉得很通俗了

无极县18048151212: 原码,反码和补码表示的规则分别是什么 -
壤尝重组: 数在计算机中是以二进制形式表示的. 数分为有符号数和无符号数. 原码、反码、补码都是有符号定点数的表示方法. 一个有符号定点数的最高位为符号位,0是正,1是副. 以下都以8位整数为例, 原码就是这个数本身的二进制形式. 例如 ...

无极县18048151212: 原码,反码,补码的作用和产生的原因是什么 -
壤尝重组: 原码、反码与补码及其意义 (1)数值数据的表示 我们把一个数在计算机内被表示的二进制形式称为机器数,该数称为这个机器数的真值.机器数有固定的位数,具体是多少位与机器有关,通常是8位或16位.机器数把真值的符号数字化,通常...

无极县18048151212: 计算机组成原理补码1.0000和10000的原码分别是什么?要详细解释 -
壤尝重组: 1.0000和10000本就是原码. 8位字长纯小数,第一位为符号位,小数点在第一位后面,后七位为具体数值,如: -0.1001原码表示为1.1001,反码为1.0110,补码为1.0111;-1的补码为1.0000000. 若数据x的形式为x=x0.x1x2…xn(其中x0为符...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网