负数如何存储在内存中()

前提条件-基数转换,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。

    推荐阅读