从C/C++中的变量中观察位

I a*_*tau 1 c c++ binary-data

我想读一个数字,比如一个浮点数,并允许用户查看哪个位模式负责他们的输入.如何允许将变量作为int或数组打印或存储为简单的二进制值而不是0-9或az等?

这不符合我的要求.它改为给出一个数字0-9的int,这显然不是二进制数.

int main(){

cout << "Please enter a float number." << endl;
float number;
    cin >> number;

    int bits = *((int*) &number);

    cout << number << endl;

    cout << bits << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Car*_*rum 5

你正在尝试的最简单(和C友好)方法是使用指针char并使用它来访问float变量的各个字节:

unsigned char *b = (unsigned char *)&number;
Run Code Online (Sandbox Code Playgroud)

然后迭代字节:

for (i = 0; i < sizeof number; i++)
{
    printf("%02x", b[i]);
}
Run Code Online (Sandbox Code Playgroud)

请注意,此方法打印出十六进制值,但如果您确实希望以这种方式执行,则可以直接转换为二进制表示:

for (i = 0; i < sizeof number; i++)
{
    for (j = 0; j < CHAR_BIT; j++)
    {
        printf("%d", (b[i] >> j) & 1);
    }
}
Run Code Online (Sandbox Code Playgroud)