当前位置:首页 > 内存 > 正文

负数在内存中的存储形式

  • 内存
  • 2024-05-12 14:24:35
  • 3104

一、+0和-0在内存里怎么存储

二进制补码中只有一个编码:00000000。


只有原码和补码中有两个零(+0,-0)。


但是,在计算机中,值始终以二进制补码表示和存储。


计算机中既没有原码,也没有反码。


所以,+0和-0在计算机中不存在。


那么反思它们并解释它们是没有意义的。


——————————————————————————————


值0既不是正值也不是负值。可以说是“中性”。


但在计算机编码中,它是1或0,不能表示“中性”。


因此,为了愚弄所有人,计算机专家必须给出零并发明两个代码(+0,-0)。


后来我发现我能骗过人,但骗不了电脑。


因此,原码和逆码均无法应用。


其实原码就是反码+0-0。这些垃圾概念只是一堆谎言。


正负数和补码可以直接交换,无需切换到原码的反码。


二、计算机中的负数以何种形式存在呢?

例如,-9的补码是11110111。

9的源代码是00001001。对于负数,补码的最高位为1,其余的反转为11110110。接下来,将最小值加1,即11110111。

计算机中的负数以补数形式存在。补码=原码的逆码+1。

一个字节为8位,可以表示-128到+127范围内的值。在二进制表示中,它将是10000000-01111111(注意:最高有效位代表符号)。最高有效位为1的任何数都是负数,最高有效位为0的任何数都是正数。

扩展信息:

补码乘法

补码乘法需要[X*Y]补=[X]有不。补数×[Y]补数属性。然而,[X*Y]补码==[X]补码[011*011]=-01001=10111。

如果[Y]补=y31y30...y0,则Y=-y31*2^31+y30*2^30+...+y0*2^0

原始代码表示在值之前添加了一个符号位(即最高有效位是符号位)。该位为0表示正数,1表示负数(0有两种表示:+0和-0),其余位表示数字的大小。