gpt4 book ai didi

C 语言 以二进制方式访问内存

转载 作者:行者123 更新时间:2023-11-30 21:12:29 33 4
gpt4 key购买 nike

基本上我要问的是:

当我执行 a + b = c 时,c 以二进制形式存储在内存中。

如何访问该部分内存并以该形式检索 c 并在以后使用它。

示例:2 + 3 = 5 ,5 存储为“0101”。变量 d,将检索结果“0101”,我将能够输出它。

最佳答案

我猜你搞乱了数据在计算机世界中的表示方式。内存中的所有数据都是二进制的,由位组成,这些位按字分组。在 64 位系统上,内存字由 64 位组成。每个位的值可以是“on”或“off”=>“1”或“0”;

变量只是内存中保存数据的位置的符号名称。即

int i;

在内存中保留一个足以包含“c”中整数值的位置。默认情况下,“c”中的此类值通常(取决于操作系统)是 32 位宽。

int a, b, c;
a = 2;
b = 3;
c = a + b;

上面的所有变量都与内存中的不同位置相关。只要内存中存在该位置,“c”就会包含 5,直到有人将其更改为不同的值。

printf ("%d", c);

上述函数将二进制值“c”转换为字符值“5”并将其打印在屏幕上。这样您就会在屏幕上看到“5”。 “%d”告诉函数“c”是十进制整数值。

每个字符本身也由一个 int 值表示,尽管在 ascii 编码方案中它只需要“8”位来表示。因此,字符“5”被编码为 int 值 53。

 print("%c", '5') // will print '5'
print("%d", '5') // will print 53

逐位打印二进制数比较困难。 printf 中没有这样的格式说明符。因此,您需要编写一个小程序来逐位分析数字并将其打印出来:

#include <stdio.h>

int main() {
int a=2, b= 3, c = a+b;

for (int bit = 31; bit >= 0; --bit) {
if (((c >> bit) & 1) == 0)
printf("0");
else
printf("1");
}
printf("\n");
return 0;
}

结果是:00000000000000000000000000000101

关于C 语言 以二进制方式访问内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53452899/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com