什么是原码、反码、补码?

如题所述

计算机中,并没有原码和反码。

正负数据,在计算机中,只是以补码存放的。

以八位二进制来说明补码结构。

数字 0,就是以 0000 0000 存放。

数字 1,就是加上 1,得 0000 0001。

其它,继续加,就行了。

数字 127,就是 0111 1111。

------

数字-1,就是 0 减一,即:

  0000 0000-1 =(借位 1)  1111 1111。

只保留八位,存放形式就是 1111 1111 (十进制 255)。

数字-2,就再减一,得:1111 1110 (= 254)。

数字-3,就再减一,得:1111 1101 (= 253)。

其它,继续减,即可... ...

数字-128,存放形式就是:1000 0000 (= 128)。

------

以上这些,就是补码。

八位补码可以表示:-128~+127。

计算公式:

 负数的补码=【256+该负数】

 正数的补码,就是正数本身

(如果需要二进制,你自己再变换。)

------

用补码代替负数,就可以把减法,转换为加法运算。

因此,计算机只要有一个加法器,就够用了。

例如: 7-3 = 4。

用补码的计算过程如下:

    7 的补码=0000 0111

    -3的补码=1111 1101

--相加-------------

   得:  (1)  0000 0100 = 4 的补码

舍弃进位,只保留八位作为结果,就是 4。

这就用加法,解决了负数以及减法的问题。

------

原码和反码,并没有这些功能。

所以,在计算机中,并没有原码和反码。

所谓的“取反加一”,由谁算呢?

计算机,可不做这些事。

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-11-05
引入原码
反码
和补码的目的就是为了解决减法问题,因为计算机CPU的运算器中只有加法器,要把减法转化成加法来计算.
举个例子,A表示十进制数“+16”,B表示十进制数“-19”,把这两个数的原码直接相加,得:
A=+16
(A)原=00010000
B=-19
(B)原=10010011
00010000
+
10010011
————
10100011
其结果符号位为1是负数,其数值位为100011,即等于十进制数“-35”,这显然是错的结果.
再比如,十进制数“+16”与“+19”的原码直接相减,得:
00010000
-
00010011
————
11111101
结果为“-125”,这又是错的.
但是引入补码后,加减法都可以用加法来实现,如“-16+11”的运算:
11110000
+
-16的补码
00001011
11的补码
————
11111011
-5的补码
如果是“-16-11”,那么就转化为加法运算“-16+(-11)”
11110000
+
-16的补码
11110101
-11的补码
————
111100101
-27的补码
在字长为8位的系统中,最高位所产生的进位被自然丢弃,运算结果的机器数为11100101,是-27的补码形式,结果正确.
顺便告诉你一些其它的东西:
1.二进制数中,两数的补码之和等于两数和的补码.
2.补码=反码+1
3.反码=原码除符号位外其它数值取反(即该数的绝对值取反),即“0”变“1”,“1”变“0”.
4.任何正数的原码
反码
补码的形式完全相同(即都是自身,不变)
5.在计算机中,有符号的数都是采用补码来表示的.
6.计算的时候,符号位也参与运算.本回答被网友采纳
第2个回答  2013-10-23
1):补码加法公式
   [X+Y]补 = [X]补 + [Y]补

2):补码减法公式
[X-Y]补 = [X]补-[Y]补 = [X]补 + [-Y]补
其中:[-Y]补称为负补,求负补的办法是:对补码的每一位(包括符合位)求反,且未位加1.
第3个回答  2020-01-09
第4个回答  2022-09-24

在计算机系统中,数值,一律采用补码来表示和存储。

原码和反码,在计算机中,都不存在。

补码,就是一个“代替负数”的正数。

使用了补码之后,计算机中,就没有负数了,同时,也就没有减法运算了。

使用补码的目的,就是:简化硬件。

----------------

补码(正数),怎么就能代替负数呢?

用十进制来说明,比较容易理解。

你看:

   25 - 1 = 24

   25 + 99 = (一百) 24

你如果舍弃进位,+99 就能代替-1;加法,也就能代替减法。

同样,+98 也可以代替-2。

这些正数,就是“负数的补数”。

公式:  补数 = 负数 + 10^n, n 是补数的位数。

----------------------

计算机用二进制,补数,就叫做补码了。

对于 8 位 2 进制,补码 = 负数 + 2^8 = 负数 + 256。

所以,-1 的补码就是 255 = 1111 1111 (二进制)。

-2 的补码就是 1111 1110。

。。。

正数,不需要变换,必须直接参与运算。

所以,正数,它就没有补码。

----------------------

求 7-2 = 5,用补码计算如下:

     +7 = 0000 0111

   [-2]补  = 1111 1110

---相加-------------

   得: (1)  0000 0101  = +5

舍弃进位,结果,就是非常正确的。

----------------------

补码,就是补码,与原码反码毫无关系。

补码,本来,是很简单的,也很容易理解的。

但是,从“原码反码取反加一。。。”来学习补码,就不容易理解了。

那么,“原码反码。。。”,老师总是讲这些,是想干什么呢?

这些老师脑子不好用,所以才弄出这些骚操作。

计算机的原码,反码,补码是怎么回事?可以举例说明吗?
原码、反码和补码是计算机中对数字二进制的三种表示方法。1、原码 原码(trueform)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。例如:用8位二进制表示一个数,...

什么是补码原码和反码
2、反码。是数值存储的一种,多应用于系统环境设置,如linux平台的目录和文件的默认权限的设置umask,就是使用反码原理。3、补码。在计算机系统中,数值一律用补码来表示和存储。原因在于使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。

原码反码和补码有什么区别?
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。正数的补码就是其本身,负数的补码是在其原码的基础上符号位不变,其余各位取反, 最后+1(即在反码的基础上+1)。正数的原码,反码,补码都...

补码,原码,反码什么的。有什么作用啊!
反码:正数的反码就是原码,负数的反码等于原码除符号位以外所有的位取反 举例:int类型的 3 的反码是 00000000 00000000 00000000 00000011 和原码一样没什么可说的 int类型的 -3 的反码是 11111111 11111111 11111111 11111100 除开符号位,所有位,取反 解决了加减运算的问题,但还是有正负零之分,...

原码反码和补码有什么区别?
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值,如\\r\\n[+1]原 = 0000 0001\\r\\n[-1]原 = 1000 0001\\r\\n正数的反码是其本身\\r\\n负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.\\r\\n[+1] = [00000001]原 = [00000001]反\\r\\n[-1] = [...

什么是原码、反码、补码?
机器数的反码可由原码得到。如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。设有一数X,则X的反码表示记作[X]反。反码通常作为求补过程的中间形式,即在一个负数的反码的未位上加1,就得到了该负数的补码。①...

反码补码原码是什么意思
原码是最基本的编码方式,适用于简单的数值表示和计算。反码是在原码的基础上发展而来,主要用于解决正负数运算问题。补码是在反码的基础上进一步改进,主要用于解决计算机中数值的范围问题,使得计算机能够表示所有的整数。2、编码方式 原码直接将数值的二进制形式作为原码,正数的原码与其二进制形式相同,负数...

电脑中原码和补码是什么关系?
原码,反码,补码是机器存储一个具体数字的编码方式。原码跟补码之间的关系是:正数的补码与原码相同,负数的补码为 其原码除符号位外所有位取反(得到反码了),然后最低位加1。在计算机系统中,数值一律用补码来表示和存储。使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。原...

原码、反码、补码
原码就是这个数本身的二进制形式。 例如0000001 就是+11000001 就是-1 正数的反码和补码都是和原码相同。 负数的反码是将其原码除符号位之外的各位求反 [-3]反=[10000011]反=11111100 负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。 [-3]补=[10000011]补=11111101 一个数和它的补码是可逆...

什么是原码、补码和反码?
原码、补码和反码是计算机中表示数值的基本方式,它们之间的关系可以通过以下公式进行计算:原码 = 反码 + 1 反码 = 补码 - 1 补码 = 2^n - 1,其中n为数值的位数 例如,假设我们要计算一个8位有符号整数的原码、补码和反码,则可以按照以下步骤进行计算:1. 将8位二进制数10000001转换为十进制...

相似回答