2012-03-07 97 views
0

以下代码给出错误的二进制输出: 输入是十六进制数,输出应该是二进制数。错误的输出代码

它总是输出:

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; 

} 
+1

这与您的问题标题有什么关系? – 2012-03-07 09:42:08

+0

ow错了,确实是对不起,对不起 – Joriek 2012-03-07 09:48:56

+0

@Joriek,编辑标题以便反映你的问题。 – taskinoor 2012-03-07 09:52:34

回答

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;