为什么现代计算机都用补码来表示整数
就是为了:简化硬件,省钱。
因为,负数,可以用一个正数(补码)代替。
如: 24 - 1 = 23
24 + 99 = (一百) 23
忽略进位,用 +99 就可以代替-1。
那么,借助于补码,就可以,把减法转换为加法运算。
因此,在计算机中,只需设置一个加法器,便可加减通吃了。
2024-12-27 广告
虽然,计算机用是二进制数。
但是,进行数学计算时,二进制数、十进制数,并没有本质的区别。
十进制数中,有补数,二进制数中,有补码。
它们,都是雷同的。
其实,所谓的补码,并不是什么什么码,它也是数。
你就看十进制吧。
当你忽略了进位,+99,能代替-1:
● 27 + 99 = (进位 1) 26,
● 27 - 1 = 26。
舍弃了进位,正数,就当负数、加法,就能完成减法运算。
在计算机中,虽然用的是二进制,也同样是这样的。
这些代替负数的正数,就是计算机专家发明的“补码”了。
-------------------
什么是补数? 99、1,又是什么关系?
若两数之和,为 10、100、1000 ... 10^n,这两个数,就是【互为补数】。
如:4 和 6、88 和 12、455 和 545 等等,就互为补数。
99、1,显然也是互为补数。
------
对于二进制数来说,若两数之和,为 2^n,也就是互为补数了。
八位二进制的进位,是 2^8 = 256 = 1 0000 0000 (二进制)。
那么,1 和 255、2 和 254、...、128 和 128,都是互为补数的关系。
------
在前面已经证明:在十进制时,-1,就可以用 +99 代替。
同样道理,在二进制时:-1 就可以用 255 (1111 1111) 代替。
其它的:-2 用 1111 1110、-3 用 1111 1101、、、代替即可。
这就是计算机专家发明的“补码”了。
其实,补码,并不是什么码,它也是正常的数值。
所谓的:[ X ]补 + [ Y ]补 = [ X + Y ]补,也不过是故弄玄虚而已。
关键问题是:舍弃进位! 他们却没有认真的强调一下。
------
其实,进位、舍弃进位、补数,这些都是小学算术中的概念。
计算机专家如果好好的上个小学,就一定不会编造那些无聊的概念了。
原码简单,适用于乘除运算,但用原码表示的数进行加减法运算比较复杂。
补码,减法运算可以用加法来实现,例如 [X-Y]补 = [X]补 +[-Y]补,
而且,数的符号位也可以参与运算,便于运算结果的正负及是否溢出判断。
因此在计算机中大都采用补码来进行加减及乘除运算。
(不仅是整数,小数亦可用补码表示)