C 我可以从寄存器中得到整数的2s补码表示吗?

C 我可以从寄存器中得到整数的2s补码表示吗?,c,C,我认为,如果scanf的寄存器中有某个整数,那么该数字将采用2s补码表示。我能用printf得到那个号码吗?我搜索了很多网站,但是找不到C初学者的代码 浮点数不是存储在2的补码中,而是存储在。要打印某些二进制数据的二进制表示形式,请首先参见。您可以将浮点放入并集以提取单个字节: #include <stdio.h> /* printf */ #include <string.h> /* strcat */ // taken from https://s

我认为,如果scanf的寄存器中有某个整数,那么该数字将采用2s补码表示。我能用printf得到那个号码吗?我搜索了很多网站,但是找不到C初学者的代码

浮点数不是存储在2的补码中,而是存储在。要打印某些二进制数据的二进制表示形式,请首先参见。您可以将浮点放入并集以提取单个字节:

#include <stdio.h>      /* printf */
#include <string.h>     /* strcat */

// taken from https://stackoverflow.com/a/112956/1689451
const char *byte_to_binary(int x)
{
    static char b[9];
    b[0] = '\0';

    int z;
    for (z = 128; z > 0; z >>= 1)
    {
        strcat(b, ((x & z) == z) ? "1" : "0");
    }

    return b;
}

union {
  float f;
  unsigned char b[4];
} x;

x.f = 0.34;
for (int i = 0; i < 4; i++) {
  printf("%s", byte_to_binary(x.b[i]));
}

我没有尝试这个例子;可能不会编译,但应该给出正确方向的提示。

如果您有疑问的话,c中没有标准可以打印2的补码或二进制数。这项任务必须单独解决。例如

对于i=0;i> 31-i&1;//或复制到本地字符串


否则扫描%f,&my\u float;使用printf%f打印,我的\u浮点

欢迎来到堆栈溢出!你的问题有点含糊——你能试着更好地解释你想做什么吗?显示一些代码通常有助于告诉我们问题是什么。特别是,短语float和2的补码通常不会同时出现。float在内部没有使用2的补码,维基百科关于2的补码的文章也没有提到非整数的用法。谢谢各位,我编辑了这个问题。。。