不是计算机来区别原码、补码,即原码、反码和补码,正数的原码、反码和补码,负数的补码最高位为1,计算机如何区别原码与补码使用补码的意义在于:可把负数变正数,负数的原码最高位为1,负数的反码最高位为1,补码原码。
计算机如何区别原码与补码
使用补码的意义在于:可把负数变正数,可把减法变加法。
从这个实用性来讲,计算机中,只是用补码。原码根本就不存在。
-------
计算机,是执行程序的。程序,都是由人,编写的。
所以,不是计算机来区别原码、补码。
而是由人,来区别。
-------
如果限定,只是使用两位十进制数 0~99,共有一百个。
那么,减一,就可以用 +99 代替:
24 - 1 = 23
24 + 99 = (1) 23
只保留两位,忽略进位,结果就是相同的。
99,就称为-1 的补数。
-------
看到了吗? 出现了进位。
如果你忽略了进位,实际上就是减法运算!
--这时,99 就是补数,是当做-1 来用的。
如果不忽略进位,结果就是 1 百 23,这还是加法运算。
--此时,99,就是正常的数字。
。。。。。。
一个代码,到底是原来的数字,还是代表负数?
就看你怎么对待它了。
这些都是由编程人,来决定。
计算机,它才不管这些。
原码,反码,补码的定义是什么
有符号数,有三种表示方法,即原码、反码和补码。
但是,在计算机系统中,数值一律用补码来表示和存储。
所以,在计算机系统中,原码和反码,都是不存在的。
----------
想要理解补码,要先从补数开始。
钟表的时针转一圈,周期是 12 小时。
倒拨 3 小时,就可以用正拨 9 小时代替。
9 就是-3 的补数。 9 = 12-3。
同理,分针倒拨 X 分,就可以用正拨(60-X)代替。
60 是分针的周期。
------
对于两位十进制 0~99,周期就是一百。
这时,减一,你就可以用 +99 代替。
25 - 1 = 24
25 + 99 = (1) 24
结果取两位,舍弃进位。这两种算法,功能就是相同的。
99,就称为-1 的补数。
98,就是-2 的补数。
。。。
负数的补数 = 周期 + 该负数。
利用补数,就可以用加法,代替减法运算。
正数,不需要求补数。
------
计算机使用二进制,补数,就改称:补码。
八位二进制,共有 256 个数字。负数的补码 = 256+该负数。
16 位二进制,共有 2^16 个数字。负数的补码 = 65536+ 该负数。
这就是补码的定义式。在你的书上,一定能找到这种算式。
------
在八位时:
-1 的补码是:256-1 = 255 = 1111 1111(二进制)。
-2 的补码是:254 = 1111 1110。
-3 的补码是:253 = 1111 1101。
。。。
-128 补码:128 = 1000 0000。
------
有了补码,计算机仅需要一个加法器,就可以加减通用了。
而原码和反码,不具备这种能力。
所以,原码和反码,究竟是怎么定义,就不必关心了。
因为,它们,毫无用处。
电脑中原码和补码是什么关系
电脑中,只有补码。并没有原码和反码。正数的原码、反码和补码,都是相同的。如果绝对值相同,则有,正数的补码+负数的补码=0。那么,负数的补码=0-正数的补码。
什么是一个数的原码,反码,补码
原码,反码,补码针对的是定长二进制存储器表示的有符号整数。正数的原码,反码,补码都相同。负数的原码最高位为1,其他位为整数的绝对值(零有+0、-0之分)。负数的反码最高位为1,其他位为整数的绝对值按位取反(零有+0、-0之分)。负数的补码最高位为1,其他位为整数的绝对值按位取反再加一(零没有+0、-0之分,最常用)。比如-1的原码为0x80000001,反码为0xFFFFFFFE,补码为0xFFFFFFFF。//---------在计算绝对值、取反、加一的过程中,无论提升成多少位去计算,最后装填时,都保留后几位(符号位以外相应位数)。