2013-10-05 4 views
1

printBits의 출력은 ('A') 0001 0100로 생각하지만 난 내가 아래에있는 내 코드에서 문제를 알아낼 수 없습니다 0100 0001 0100 1101 0000 0000 getiing하고 있습니다.변수의 각 비트를 읽는 함수를 어떻게 구현합니까?

unsigned char getBit(unsigned char c, int n) { 
    return c=(c&(1<<n))>>n; 

} 


void printBits(unsigned char c) { 
    int i=7; 
    while(i>=0){ 
    printf("%d", (getBit(c,i--); 
    } 
} 
+0

당신이'값'c', 그냥하지 왜'(C >> N) 1 '의 n'을 조금 얻고 싶다면? –

+0

또한 메소드가'char'를 반환하는 이유는 무엇입니까? 'bool' 값을 반환하면 더 많은 논리가됩니다. – SJuan76

+0

실제 코드에서 자르고 붙여 넣기합니까? 컴파일되지 않습니다. – jxh

답변

1

귀하의 의견은 귀하의 의견과 일치하는 것으로 보입니다. 그러나 귀하의 의견에 따르면 귀하는 귀하의 인쇄 기능을 2 회 더 전화했음을 보여줍니다. 출력이 일치 통화 서열이 (인쇄 기능 구문 오류를 수정 후) here를 나타낸다

printBits('A'); 
printBits('M'); 
printBits('\0'); 

.

+0

죄송를 반환하기위한 것입니다,하지만 난 당신의 printBit 사이의 차이를 볼 수없는 것) 함수와 내 – Manuel

+0

[여기를보십시오] (http://ideone.com/JSceEZ) 함수의 구문 오류를 볼 수 있습니다. – jxh

+0

오타가 있지만 여전히 동일한 결과를 내고 있습니다. – Manuel