0的补码

时间:2024-04-07 15:52:59编辑:奇事君

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

数字(正数、负数、零),是以各种代码,存入计算机的。要知道,在天下,只有一个零。这可是小学生都知道的知识。但是,原码反码,都编制了两组代码。这就是“逆天”了。-------------------零的原码,有两个代码: [+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 ! 这也是无法解释的结果。

0的补码是多少

0在计算机种分+0与-0,它们的原码,补码,反码如下:1、[+0]原码=0000 0000, [-0]原码=1000 0000;2、[+0]反码=0000 0000, [-0]反码=1111 1111;3、[+0]补码=0000 0000, [-0]补码=0000 0000。在这里你会发现,+0和-0的补码是一样的,即0的补码只有一种表示。在计算机内,符号数有3种表示法:原码、反码和补码。扩展资料:原码、补码、反码的转换规则:1、原码的求法:(1)对于正数,转化为二进制数,在最前面添加一符号位(这是规定的),用1表示负数,0表示正数,如:0000 0000是一个字节,其中左边第一个0,0为符号位,表示是正数,其它七位表示二进制的值。(2)正数的原码、反码、补码是同一个数。(3)对于负数,转化为二进制数,前面符号位为1,1表示是负数。2、计算原码只要在转化的二进制数前面加上相应的符号位就行了。3、反码的求法:对于负数,将原码各位取反,符号位不变。4、补码的求法:对于负数,将反码加上二进制的1即可,也就是反码在最后一位上加上1就是补码了。参考资料来源:百度百科-原码参考资料来源:百度百科-补码参考资料来源:百度百科-反码

补码为1.0000和1,0000的原码和真值分别是什么,为什么

补码为 1.0000 和 1,0000 的原码和真值分别是什么?原码都不存在。真值分别是-1.0 和-16。因为原码不存在,所以凡是用“取反加一”来求解的,都是错误的。必须使用“补码的定义式”求解。补码的定义式,如下。----------------------定点小数的补码(mod=2):  [ X ]补 = X,     ( 0 ≤ X < 1 )  [ X ]补 = 2 + X,   (-1 ≤ X < 0 )因此,-1.0 的补码= 2 + (-1.0) = 1.0000B。----------------------定点整数的补码(mod=2^n):  [ X ]补 = X      ( 0 ≤ X < 2^(n-1) )  [ X ]补 = 2^n - | X |  (-2^(n-1) ≤ X < 0 )当 n = 5,-16 的补码 = 2^5-16 = 1,0000B。----------------------

上一篇:编程技术

下一篇:12306吧