这是一种规定。
补码是为负数想出度来的办法,目的是减法可以用加补码的方法实现,补码可用反码加1得来,于是又有了负数的知反码。
计算机里有硬件“加法器”,有了补码,减法道也可以用加法器做了。
计算机里运算速度,内硬件远快于软件,这就是反码,补码和原码花样的原因。
扩展资料:
原码、反码和补码是计算机中对数字二进制的三种表示方法。
1、原码
原码(true form)是一种计算机中对数字的二进制定点表示方法。
2、反码
反码是数值存储的一种,多应用于系统环境设置,如linux平台的目录和文件的默认权限的设置umask,就是使用反码原理。
3、补码
正数:正数的补码和原码相同。负数:负数的补码则是符号位为“1”。
参考资料来源:百度百科-反码
参考资料来源:百度百科-原码
引进补码的作用是为了让计算机更方便做减法
比如说,按时间12个小时来算
现在的准确时间是4点
有一个表显示的是7点
要校准时间,我们可以将时针退7-4=3格,也可以向前拨12-3=9格
计算机做减法就可以转化成-3=+9
这样可以简化计算机的硬件设备去做复杂的减法
然而得到补码的定义:正数时仍为正,而负数x求补要从2减去|x|
本就为了简化减法引进的补码,结果在求补的过程中还是出现减法
这样,再引进了反码表示法方便求补
说白了,补码反码就是为了简化减法而来的,将减号化为负数
再将负数化为补码求加法
跟正数没关系
不管是正整数还是正小数,原码,反码,补码都全部相同
在计算机系统中,数值,一律采用补码表示和存储。
原码反码,是没有任何用处的。在计算机中,它们也都不存在。
相同、或不相同,又有什么意义呢?
---------------------
补码,其实就是一个【代替负数】的正数。
使用了补码之后,在计算机中,就没有负数了。
顺便,也就消除了减法运算。
那么,计算机只需配置一个加法器,就可以走遍天下了。
---------------------
补码(即一个正数),怎么就能【代替负数】呢?
理论基础在于:计数系统的周期性。
比如,2 位 10 进制数(0~99),计数周期就是 10^2 = 100。
那么: 25 - 1 = 24
25 + 99 = (一百) 24
只要你:舍弃进位,仅保留 2 位数,99 就能代替-1。
同理,98 也能代替-2。
。。。
这些正数,就称为“负数的补数”。
变换公式: 负数的补数 = 负数 + 周期。
这公式,小学生,都可以推导出来。
另外还有:
时钟,时针倒拨 3 小时、正拨 9 小时,等效吧? 周期是 12。
三角函数,-π/2、+3π/2,正负两种角度,也等效,周期是 2π。
。。。
正数负数之间的变换公式,都是: 正数 = 负数 + 周期。
---------------------
计算机中,8 位 2 进制数,周期就是 2^8 = 256。
-1 的补码,就是:-1 + 256 = 255 = 1111 1111(二进制)。
-2 的补码,就是:254 = 1111 1110(二进制)。
。。。
求补码,用“负数数值”,直接就能求出补码。
不必经过“原码反码取反加一符号位不变”。
数学不好的老外,才需要弄哪些骚操作!
---------------------
只有负数,才需要变换成补码(正数)。
正数,不需要变换,也不允许变换,必须直接去相加运算。
所以,正数,它就没有补码。
有人说:正数的。。。都相同。
这就是被老外带到沟里去了。
原码反码,都是不存在的,哪还有什么相等!
计算机所能计算的位数,是固定的,如 8 位机、16 位机。。。
对于 8 位二进制来说,减一,可以用“加上 1111 1111”代替。
如: 0000 1010 - 0000 0001 = 0000 1001
0000 1010 + 1111 1111 = (1) 0000 1001
舍弃进位,只保留 8 位的结果,这两个算式的功能,是完全相同的。
这里的 1111 1111 就称为-1 的补码。
借助于补码,就可以用加法器,进行减法运算。
那么,凡是负数,就需要变换成补码,再用加法运算。
而正数,不需要变换,直接进行计算。
也就是说:正数,根本就不存在补码,以及反码。
但是,有些人基本概念不清,乱说:正数的...相同。
不理会这些谬论,就完了。
我是一个规则,就像数学里面的那些定理一样