📜  负数如何存储在内存中?

📅  最后修改于: 2021-06-28 16:01:40             🧑  作者: Mango

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

让我们举个例子:
例子 –
整数a = -2056;
2056的二进制将被计算为:

00000000000000000000100000001000(32位表示,根据int在C中的存储方式)
上述二进制数的2的补码是:
11111111111111111111011111111000。

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

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