负数如何存储在内存中?

前提条件-基数转换,1和2的二进制数的补码,2的二进制字符串的补码

假设以下代码片段int a = -34;现在如何将其存储在内存中。这就是完整的理论。每当遇到带有减号的数字时, 该数字(忽略减号)都将转换为其等效的二进制数。然后计算数字的两个补数。这两个补码将保留在内存中分配的位置, 并且由于保留的二进制数为负数, 因此符号位将设置为1。每当访问该值时, 首先将检查符号位是否为1, 然后二进制文件将被二进制补码并转换为等效的十进制数, 并以减号表示。

让我们举个例子:

示例–

整数a = -2056;

2056的二进制将被计算为:

00000000000000000000100000001000(32位表示, 根据int在C中的存储方式)

上述二进制文件的2的补码是:

11111111111111111111011111111000.

因此, 最终上述二进制文件将存储在为变量a分配的内存中。

当它开始访问变量a的值时, 将从存储位置中检索上述二进制文件, 然后将检查其最左位的符号位是否为1, 因此二进制数为负数, 因此将是2的补码, 当将是2的补码时将得到2056的二进制数, 即:

00000000000000000000100000001000

上面的二进制数将被转换为2056的十进制等效数, 并且符号位为1, 因此将从二进制数获得的十进制数将用负号表示。在我们的情况下-2056。


来源:

https://www.srcmini02.com/68382.html

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?