补码与反码有什么用处?
x 的实际值是 65535。因为,-1的二进制(补码)表示为1111 1111 1111 1111
为什么不等于-1的原码1000 0000 0000 0001的数? 展开
1、补码:在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
2、反码:反码是数值存储的一种,但是由于补码更能有效表现数字在计算机中的形式,所以多数计算机一般都不采用反码表示数。
扩展资料:
已知一个数的补码,求原码的操作其实就是对该补码再求补码 :
1、如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
2、如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。
例:已知一个补码为11111001,则原码是10000111(-7)。因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”。其余七位1111001取反后为0000110;再加1,所以是10000111。
参考资料来源:百度百科-反码
参考资料来源:百度百科-补码
2024-12-03 广告
用补码表示“有符号数”,就是“用正数代替负数”。
比如,可以用 255 (二进制 1111 1111),代替-1 进行运算。
这样,就把加、减法,统一用加法来进行计算,硬件就得以简化。
因此,在计算机里面,通用的是补码。
原码和反码,都不具备这种特点,所以,计算机中,并不使用它们。
-----------------
负数与补码的关系,是很简单的。
只要对其正数做“减一、取反”就行了。
如,-1 的补码,可如下求出:
先对 +1 减一,得:0000 0000;
再将其取反,就是:1111 1111 (十进制 255)。
如果是 16 位数,那就是 16 个 1,即 65535。
-----------------
下面求-13 的补码:
减一,得:12 = 0000 1100 (二进制)。
取反,得:1111 0011。
即 [-13]补 = 1111 0011。
-----------------
记住:减一、取反,就足够了。
原码反码符号位,都是无用的。
数字 0,其八位补码就是:0000 0000。
那么,数字 -1,就是 0000 0000 - 1 = 1111 1111。
所以,数字 -1,其补码就是:1111 1111 = 255(十进制)。
同理,数字 -2,其补码就是:1111 1110 = 254(十进制)。
。。。
最终,数字 -128,其补码就是:1000 0000 = 128(十进制)。
--------
如果是 16 位的补码:
数字 -1,其补码就是"16 个 1",等于 65535。
--------
求补码,并不需要原码反码。
计算机中,根本也没有原码反码。
原码反码,是毫无用处的东西。
这所以要用补码,原因你可以百度一样,百度百科里就有,我这里直接摘录如下:
补码(two's complement) 1、在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃
推荐于2017-09-13 · 知道合伙人教育行家
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
反码作用:
反码是数值存储的一种,但是由于补码更能有效表现数字在计算机中的形式,所以多数计算机都不采用反码表示数。机器数的反码可由原码得到。如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。设有一数X,则X的反码表示记作〔X〕反。