我想读一个数字,比如一个浮点数,并允许用户查看哪个位模式负责他们的输入.如何允许将变量作为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)
你正在尝试的最简单(和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)