2012-03-07 18 views
0

次のコードは間違ったバイナリ出力を示します。 入力は16進数で出力は2進数でなければなりません。間違った出力コード

それは、常に出力:

0  
0  
0  
0 

それは右の2進数を出力してどのように私はそれを変更することができますか?

#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

これはあなたの質問のタイトルと何が関係していますか? –

+0

本当に間違ったタイトルがあります。申し訳ありません。 – Joriek

+0

@Joriek、あなたの問題が反映されるようにタイトルを編集してください。 – taskinoor

答えて

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;