计算机中,只用补码表示带符号数。
在计算机中,并不存在原码反码。
求补码,也有更简单的方法,也用不着原码反码。
所以,原码反码,都没有任何用处。
让人学习原码反码,不就是忽悠吗?
------
计算机有:八位机、16 位机、32 位机。。。
在位数确定后,减去一个数,可以用加上另一个数,代替。
比如,限定使用两位十进制数,减一,你就可以用 +99 代替。
25 - 1 = 24
25 + 99 = (1) 24
取两位的结果,舍弃进位,这两种算法,功能就是相同的。
99,就称为-1 的补数。
98,就是-2 的补数。
。。。
利用补数,就可以用加法代替减法。
补数怎么求呢?
两位十进制,共有 100 个数字。于是:99 = 100+(-1)。
------
计算机使用二进制,补数,就改称:补码。
八位二进制,共有 256 个数字。于是:补码 = 256+(负数)。
16 位二进制,共有 2^16 个数字。于是:补码 = 65536+(负数)。
正数,不需要做变换,直接相加即可。
计算机中,并没有原码和反码,所以,不用关心它们。
------
在电脑上为什么要用补码呢?
利用补码,就可以用加法代替减法。
那么,计算机中,只要有一个加法器,便可进行加减运算了。
乘除运算,也不在话下了。
原码、反码、补码和移码是机器存储一个具体数字的编码方式,具体转换方法请参考视频教程:
在计算机系统中,正负数值,一律采用【补码】来表示和存储。
所谓的【补码】,其实,它就是一个“代替负数做运算”的正数。
使用了补码之后,在计算机中,就没有负数了,也就没有减法运算了。
这样一来,计算机中,只要有一个加法器,就可以打遍天下了。
----------------------------
正数,怎么就能代替负数呢?
其实,在日常生活中,早已碰到过这种事情。
如:分针转一圈,周期是 60。
倒拨 X 分,也可以用正拨 (60-X) 分代替。
用十进制来说明,就比较容易理解。
(下面,借鉴网友写的答案。)
如果限定,只使用 2 位 10 进制来计数,其周期是:10^2 = 100.
那么,可以有:
25 - 1 = 24
25 + 99 = (一百) 24
不用理会进位。只取 2 位数的结果,+99 和-1 就是等效的。
+99,就可以代表-1 进行计算; 加法,也就代替了减法。
那么,99 就称为-1 的补数。
同理,98 就称为-2 的补数。
。。。
计算公式: 补数 = 10^n + 负数, n 是补数的位数。
----------------------------
计算机用二进制,补数,就改称为:补码。
如果限定,只使用 8 位 2 进制来计数,这就是:
0000 0000 ~ 1111 1111 (十进制 255)。
其周期是:2^8 = 256.
那么,255 (即 1111 1111) 就称为-1 的补码。
同理,254 (即 1111 1110) 就称为-2 的补码。
。。。
计算公式: 补码 = 2^n + 负数, n 是补码的位数。
写成比较正式一点,【补码的定义式】就是:
当 X < 0,[ X ]补 = 模 - | X |,
其中的“模”,也就是 n 位补码的计数周期 2^n。
----------------------------
由补码的定义式可知,X 的补码,是用 X 的绝对值算出来的。
并不是某些人所说“原码反码符号位取反加一”。
求补码,与原码反码符号位,并任何无关系。
以后,再由补码求真值 X,也是用不到原码和反码的。
另外,原码和反码,并不具备“减法变加法”的功能。
所以,在计算机中,只是使用补码,原码和反码,都是不存在的。
----------------------------
原码和反码,可以说,一无是处。
而且,用“取反加一”,根本就无法解决-128 的问题。
那么,为什么还总是有人对此夸夸其谈、津津乐道呢?
一种人是上当受骗,还不自知的人。
他们还以为,这是一种,必须掌握的知识。
还有一种人,就是诚心来骗人的。
装作高人模样,欺骗初学者,误导学习方向。