为什么补码中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

为什么补码中0只有一种表示方法?
因为补码的正零与负零表示方法相同。补码一共有三个特性,除了补码的正零与负零表示方法相同外,一个负整数(或原码)与其补数(或补码)相加,和为模为补码的第二个特性,第三个特性是则是,对一个整数的补码再求补码,等于该整数自身。小数的补码则是一种很简单的方式,符号位保持1不变,数值位...

为何0在补码和移码中仅用一个编码?
设机器字长为8,对于数值0,其原码表示为[+0]原=00000000,[-0]原=10000000;其反码表示为[+0]反=00000000,[-0]反=11111111;其补码表示为[+0]补=00000000,[-0]补=00000000;若偏移量为27,则0的移码表示为[+0]移=10000000,[-0]移=10000000。因此,在补码和移码表示中,0仅用一个编码。

为什么补码中0只有一种表示?
楼上的说法不正确的~补码的存在是为了变减法为加法,简化了计算过程,即硬件的设计难度。首先要知道两个零是怎么来的,0包括+0和-0,在原码和反码中根据其计算公式,有两种形式,而对于补码来说+0,真值为0,000000和-0,其真值为1,0000000补码:一个数如果为正,则它的原码、反码、补码相同;一...

为什么在机器数补码中,零的表示是唯一的。
补码中的零,是唯一的,这就是合理的代码。所以,在计算机中,数制,一律才用补码表示和存储。

整数0的补码为什么只有一种形式000……0
0的补码是惟一的,这可由补码的定义得到。对于n=8,有 [+0]补 = [+0]反 = [+0]原 = 00000000 [-0]补 = [-0]反 + 1 = 11111111 + 1 = 00000000(mod 2的8次方)即对8位字长来讲,最高位的进位(2的8次方)按模256运算被舍掉,所以[+0]补=[-0]补 ...

0的补码是否是唯一的?
讨论0的补码是否唯一,首先需理解补码表示法。补码表示法是计算机中存储负数的一种方法。其核心是,将正数的二进制反码加一得到该数的补码。对于正数0而言,其原码为00000000(以八位为例),而补码也是00000000,因其不存在负数形式。那么对于-0(即负零)来说,其正数形式0的补码同样是00000000。按照...

为什么数字0在计算机中是一个补码数字?
1、符号位不同:计算机中所有的数均用0,1编码表示,数字的正负号也不例外。在对于整数的1+7比特的符号数值表示法中,负零是用二进制代码10000000表示的。正零是用二进制代码00000000表示的。2、用途不同:−0代表负零,一个计算机科学中存在的数字。主要表达浮点数和在某些对整数进行有符号处理...

请问计算机的补码总为什么0有唯一的补码,即[+0]=[-0]=00000000?[-0]不...
貌似是因为计算机中没有+0和-0的区别。拿8位机举例:如果有正零和负零的区别的话计算机一位的长度只能表示-127~+127共255个数,但是如果把1000,0000即我们认为的-0判断成+128就能多表示一个数。为了功能更强大,所以设计人员让计算机内部就不区别+0,-0所以也就不存在-0这个东东,所以0的补码是...

0的补码是多少?
你会发现,+0和-0的补码是一样的。即 0的补码只有一种表示。这里解释一下[-0]补码是怎么得来的。负数的补码就是反码整体加一。符号位上的进位舍弃。(所以,舍弃了符号位的补码的第一位是数值位,不是符号位,符号位舍弃了)另外解释一下原码符号位和补码符号位的关系,补码的符号位不是保持原码...

0用分别用原码和补码表示,其表示形式分别为
0的原码为:10000(-0),00000(+0)+0的补码和原码相同,为00000 -0的补码是在-0的原码(10000)的基础上,符号位不变,其它位按位取反再在低位加1(11111+1=00000),进而得到-0的补码00000 所以补码表示0只有一种情况00000.而原码则表示了两次,分别为10000和00000.希望可以帮到你,谢谢!

相似回答