计算机原码 反码 补码是什么?这跟编程有什么用?

作者&投稿:照应 (若有异议请与网页底部的电邮联系)
计算机原码 反码 补码是什么?这跟编程有什么用?~

在计算机系统中,数值,一律采用补码表示和存储。
计算机中,根本就不使用原码和反码。
补码的功能,类似于:
  时针,倒拨 3 小时,可以用正拨 9 小时代替。
按照这种思路,计算机中的负数,当然也可以用正数(即补码)代替。
如果这样,计算机中,就没有负数了。
同时,减法运算,也都不存在了。
那么,借助于补码,就能去掉计算机中的减法运算,从而就能简化计算机的硬件。
这就是使用补码的原因。
------------------------
在钟表中,时针转一圈,周期是 12。
  正拨 9 代替倒拨 3,其算法是:9 = -3 + 周期 12。
  分针,倒拨 X 分,也可用正拨(-X + 周期 60)代替。
在三角函数中,周期是 2π。
  一个负角度,也能用周期,算出等效的正角度。
  如:-π/2,就可以转换成成:+3π/2。
上述这些正数,就是“负数的补数”。
求补数的公式:
  补数 = 负数 + 周期。
------------------------
在计算机中,8 位 2 进制,称为一个字节。
其计数周期是:2^8 = 256。
那么,求负数补码的公式:
  补码 = 负数 + 周期 2^n。
-1 的补码是:-1 + 256 = 255 = 1111 1111(二进制)。
-2 的补码是:-2 + 256 = 254 = 1111 1110(二进制)。
。。。
正数,则必须直接参加运算,不许作任何转换。
即:正数,根本就不存在补码。
------------------------
例如,7-2 = 5,用八位补码计算如下:
      7 = 0000 0111
   [-2] 补 = 1111 1110
--相加------------
  得: (1)  0000 0101 = 5
舍弃进位,结果就完全正确。
由此可知,借助于补码,确实就消除了减法运算。
------------------------
补码,是从计数系统的周期性,推导出来的。
补码与“原码反码符号位”,并无半点关系。
由“取反加一”学习补码,就不会理解补码的作用和产生的原因。
那么,为什么要定义原码、反码、符号位?
老外数学不好,也就只能用这些骚操作,来求补码了。

原码、反码和补码是计算机中对数字二进制的三种表示方法。
1、原码
原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。
例如:用8位二进制表示一个数,+11的原码为00001011,-11的原码就是10001011。
2、反码
反码是数值存储的一种,多应用于系统环境设置,如linux平台的目录和文件的默认权限的设置umask,就是使用反码原理。反码的表示方法是:正数的反码与其原码相同;负数的反码是对正数逐位取反,符号位保持为1。
例如:
[+7]反= 0 0000111 B;
[-7]反= 1 1111000 B。
3、补码
正数:正数的补码和原码相同。负数:负数的补码则是符号位为“1”。并且,这个“1”既是符号位,也是数值位。数值部分按位取反后再在末位(最低位)加1。也就是“反码+1”。
例如:
[+7]补= 0 0000111 B;
[-7]补= 1 1111001 B。

扩展资料
原码、反码、补码的转换方法如下:
(1) 已知原码,求补码。
例:已知某数X的原码为10110100B,试求X的补码和反码。
首先通过原码的首位确定该数字的正负,若为正数,反码与原码相同,补码比原码在末尾加1;若为负数,求其反码时,符号位不变,数值部分按位求反;求其补码时,再在其反码的末位加1。
(2)已知补码,求原码。
按照求负数补码的逆过程,数值部分应是最低位减1,然后取反。但是对二进制数来说,先减1后取反和先取反后加1得到的结果是一样的,故仍可采用取反加1的方法。
参考资料来源:百度百科-反码
参考资料来源:百度百科-补码
参考资料来源:百度百科-原码

原码:一个数的标准的2进制格式。a7a6a5a4a3a2a1a0=a6x2^6+a5x2^5+a4x2^4+a3x2^3+a2x2^2+a1x2+a0,其中ai=0,1
a7是符号位,正数0,负数1

反码:除了符号位,原码各位0变1,1变0;
补码:反码+1
因为CPU中没有减法器,只有加法器,减去一个数,就是加上这个数的相反数。将负数用补码表示,就可以用加法器做减法。
与高级语言编程没有关系,与汇编语言编程有关系。

补码 补码 补码(two's complement) 1、在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 2、补码与原码的转换过程几乎是相同的

数,小学都学过,它们代表数量,可以进行加减乘除。

计算机里面,并没有真的数字,都是一些高、低电平而已。
可用 1、0 来表示。其实,这些都是码,并不是数。

用这些码,代表我们说的数,就必须有一些约定。
这就是原码、反码、补码、BCD 码、格雷码...等等。