以下代码给出了错误的二进制输出: 输入是十六进制数,输出应该是二进制数。
总是输出:
0
0
0
0
如何更改它以输出正确的二进制数?
#include <iostream>
using namespace std;
int main ()
{
int Number;
cin >> Number;
bool Binary[sizeof(int) * CHAR_BIT];
for(unsigned int i = 0; i < sizeof(int) * CHAR_BIT; i++)
Binary[(sizeof(int) * CHAR_BIT - 1) - i] = Number & (1 << i);
for(unsigned int i = 0; i < sizeof(int); i++)
std::cout << Binary[i] << std::endl;
system ("pause");
return 0;
}
答案 0 :(得分:1)
您正在计算它,但只打印sizeof(int)
位,而不是所有位。在上一个打印循环中使用i < sizeof(int) * CHAR_BIT
。
for(unsigned int i = 0; i < sizeof(int) * CHAR_BIT; i++)
std::cout << Binary[i] << std::endl;