2014-10-10 2 views
0

다양한 데이터 형식의 이진 표현을 표시해야하는 프로그램을 작성하고 있습니다. 4 자리 숫자마다 공백을 두려면 이진 출력이 필요합니다. 예를 들면 다음과 같습니다.이 출력에서 ​​4 문자마다 공백을 넣으려면 어떻게해야합니까?

0011 1111 1000 1110 1011 1000 0101 0010 

다음은 이진 코드를 표시하는 데 사용하는 함수의 샘플입니다. 공백으로 출력을 포맷하는 가장 좋은 방법은 무엇입니까?

void printChar(char testChar) 
{ 
    unsigned char mask = pow(2, ((sizeof(char) * 8) - 1)); 

    cout << "The binary representation of " << testChar << " is "; 
    for (int count = 7; count >= 0; count--) 
    { 
     if ((testChar & mask) != 0) 
     { 
      cout << "1"; 
     } 
     else 
     { 
      cout << "0"; 
     } 
     mask = (mask >> 1); 
    } 
    cout << endl; 
} 
+2

'(4 개 문자가 표시되어있다) {출력 공간}' –

답변

2

이미 카운터가 있으므로, 사용중인 문자를 결정하기 위해 카운터를 사용할 수 있습니다. 예를 들어 :

if(count == 3){ 

    cout << " "; 
} 

은 그냥 if-else 문 앞에이 if를 추가합니다. 이렇게하면 4 문자를 출력하면 count은 3이되므로 공간을 출력해야합니다.

참고 : 코드에서 제시하는 것처럼 한 번에 8 자만 출력한다고 가정합니다.

+0

고마워, 내가이 생각하지 않았다 믿을 수 없어합니다. 슈퍼 간단합니다. –

0
void printChar(char testChar) { 
unsigned char mask = pow(2, ((sizeof(char) * 8) - 1)); 

//Use an index to store the character number in the current set of 4 
unsigned int index = 0; 

cout << "The binary representation of " << testChar << " is "; 
for (int count = 7; count >= 0; count--) 
{ 
    if ((testChar & mask) != 0) 
    { 
     cout << "1"; 
    } 
    else 
    { 
     cout << "0"; 
    } 
    mask = (mask >> 1); 

    index++; 
    if(index == 4){ 
     cout << " "; 
     index = 0; 
    } 

} 
cout << endl; 
}