gpt4 book ai didi

c - 负数如何存储在内存中?如何知道位表示?

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

我知道 MSB、LSB、符号和幅度 1 和 2 的补码等。现在,我想知道我是否正在编写和编写进行一些位操作的程序,我将如何检查内存中的实际位级数据?

int a = -1; 我怎么知道它是 1001 还是 1110 还是 1111 在 4-位表示?

如何找出我的实现用来表示负数的方法?

我正在寻找某种方法来检查 C 程序的位级数据。

我当前的平台是 Ubuntu 12.04 LTS。再一次,问题不在于它是如何完成的。它是关于如何发现或证明它是以某种方式完成的。

最佳答案

union { int i; unsigned u; } x;
x.i = -1;

现在 x.u 为您提供具有相同位的无符号整数。只有一种方法可以表示无符号数,因此您可以检查一下。 (提示:它很可能是二进制补码。)

printf("%x\n", x.u);

上面的打印语句将打印出无符号整数的十六进制表示,您可以使用它来确定位数。

关于c - 负数如何存储在内存中?如何知道位表示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11126645/

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