为什么补码中0只有一种表示方法?

如题所述

因为补码的正零与负零表示方法相同。

补码一共有三个特性,除了补码的正零与负零表示方法相同外,一个负整数(或原码)与其补数(或补码)相加,和为模为补码的第二个特性,第三个特性是则是,对一个整数的补码再求补码,等于该整数自身。

小数的补码则是一种很简单的方式,符号位保持1不变,数值位从右边数第一个1及其右边的0保持不变,左边按位取反即可。

扩展资料:

补码的求法:

正数

正整数的补码是其二进制表示,与原码相同。

【例1】+9的补码是00001001。(备注:这个+9的补码是用8位2进制来表示的,补码表示方式很多,还有16位二进制补码表示形式,以及32位二进制补码表示形式,64位进制补码表示形式等。每一种补码表示形式都只能表示有限的数字。)

负数

求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。

同一个数字在不同的补码表示形式中是不同的。比如-15的补码,在8位二进制中是11110001,然而在16位二进制补码表示中,就是1111111111110001。以下都使用8位2进制来表示。

【例2】求-5的补码。

-5对应正数5(00000101)→所有位取反(11111010)→加1(11111011)

所以-5的补码是11111011。

【例3】数0的补码表示是唯一的。

[+0]补=[+0]反=[+0]原=00000000

[ -0]补=11111111+1=00000000

参考资料:

百度百科-补码

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2019-08-05

    补码的存在是为了变减法为加法,简化了计算过程,即硬件的设计难度。

    首先要知道两个零是怎么来的,0包括+0和-0,在原码和反码中根据其计算公式,有两种形式,而对于补码来说+0,真值为0,000000和-0,其真值为1,0000000补码:一个数如果为正,则它的原码、反码、补码相同。

    一个数如果为负,则符号位为1,其余各位是对原码取反,然后整个数加1,为了简单起见,我们用1个字节来表示一个整数:问题:0的补码表示+0的补码:00000000-0的补码:

    第一步:1111111

    第二步+1= 1 00000000

    第三部:进位1被丢弃

补码(two's complement) 

1、在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。

2、补码与原码的转换过程几乎是相同的。

本回答被网友采纳
第2个回答  2022-09-08

数字(正数、负数、零),是以各种代码,存入计算机的。

要知道,在天下,只有一个零。这可是小学生都知道的知识。

但是,原码反码,都编制了两组代码。这就是“逆天”了。

-------------------

零的原码,有两个代码:

 [+0]原码 = 0000 0000、[-0]原码 = 1000 0000。

反码,不甘落后,也是两个代码:

 [+0]反码 = 0000 0000、[-0]反码 = 1111 1111。

它们,都重复定义了“零的编码”,这就造成了混乱。

这就导致,这两种代码(原码、反码),根本就无法使用。

而且,由于零多占用一组代码,那么,所能表示的数字,必然就少一个。

如八位的原码反码,都不能表示-128。

【因此,用“取反加一”来求 0 和-128 补码,都是不可能的!】 

-------------------

在计算机系统中,数值,一律采用补码来表示和存储。

不用原码反码,也就是说,计算机无法使用它们。

补码的理论,来源于数学的规律,并非是人为的胡编乱造。

零,在补码中,只用唯一的一组代码来表示,这就不会产生混乱。

补码中,并没有违规的正负零。

-------------------

0 和-128 的补码,都是怎么求出来的?

补码,有自己的定义式,与原码反码,并无关系。

这定义式,是由数学理论推导出来的,要比胡说八道的“取反加一”更准确严密。

 当 X >= 0:  [ X ]补码 =  X;

 当 X < 0:  [ X ]补码 =  X + 2^n, n 是补码的位数。

按照定义式,0 和-128 的八位补码,如下:

 [ 0 ]补码 = 0000 0000。

 [-128]补码 = -128 + 2^8 = 128 = 1000 0000 (二进制)。

如果用“取反加一”,可就难办了。

因为,-128 并没有原码和反码,拿什么取反加一!

按照“取反加一”,零的补码,也将是“负零的反码+1”。

那么,[-0]补码=0000 0000,符号位是正的!

负零,符号位,却是 0 ! 这也是无法解释的结果。

第3个回答  2018-01-31
以8位字长定点有符号小数为例:
[x]补 = 0.000 0000b 正数的补码与原码相同,此时亦为“正零”;
[x]反 = 1.111 1111b 将反码的“负零”末位加1 求得“负零”的补码:
[x]补 = 0.000 0000b 符号位进位1自然丢失,此为补码的“负零”;
.
结论: 补码的“正负”与“负零”都是 0.000 0000b