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

正数和负数在内存中的表现

  • 内存
  • 2024-05-29 02:20:16
  • 4411

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

0的补码中,只有一种编码,00000000。


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


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


在计算机中,既不存在原码,也不存在逆码。


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


那么思考它们、解释它们是没有意义的。


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


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


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


所以,为了愚弄所有人,计算机专家不得不给出零并想出两个代码(+0,-0)。


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


因此,原码和反码均不能应用。


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


正负数和补码可以直接互换,不需要绕着原码求逆。


二、计算机中如何表示正负数?如何表示整数和实数?

在计算机中,二进制数字编码用于表示数字信息。它是一个8位二进制数。最高位代表符号位。“0”代表正数,“1”代表负数。整数用定点数表示,实数用浮点数表示。

数字信息在计算机中用二进制编码表示,有原码、补码和补码三种形式。正数的编码与原码、补码、补码相同。对于负数,补码是补码加一得到的。

定点数是指计算机中使用的一种数字表示方法。参与运算的数字的小数点位置是固定的。浮点数是指参与运算的数字的小数点位置是可变的。具体来说,这个实数是由一个整数或定点数(即尾数)乘以某个基数(在计算机中通常为2)的整数次方得到的。

扩展信息

浮点加减运算:

假设有两个浮点数x和y,分别是

x=Mx*2^Ex

y=My*2^Ey

其中Ex和Ey分别是数字x和y的顺序代码、Mx和My是数字x和y的尾数。

两个浮点数加减的运算规则为

假设Ex小于等于Ey,则x±y=(Mx*2^(Ex-Ey)±My)*2^Ey,

完成浮点加减运算的操作过程大致分为四步:

1.0操作数检查;

2.比较订单Code大小并完成订单;

3.加或减尾数;

4.结果经过标准化和四舍五入。

参考来源:郑力、董源、何江舟主编的《C++语言程序设计(第4版)》清华大学出版社第一章引言1.4信息的表示与存储

参考数据来源:--定点数

参考来源:--浮点数