2013-10-05 49 views
1

printBits('A')的輸出假設爲0100 0001,但我正在創建0100 0001 0100 1101 0000 0000.我似乎無法在我的代碼中找出問題。如何實現讀取變量每個位的函數?

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'的位'n',爲什麼不只是'(c >> n)&1'? –

+0

也爲什麼你的方法返回'char'?如果它返回一個「bool」值,那將是更多的邏輯。 – SJuan76

+0

這是從你的實際代碼中剪切和粘貼的嗎?它不會編譯。 – jxh

回答

1

您的輸出似乎與您的輸入相匹配,但您的輸出顯示您再次調用了打印功能兩次。輸出匹配這個順序呼叫:

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

這顯示here(在你的打印功能固定語法錯誤之後)。

+0

對不起,但我似乎無法看到你的printBit( )函數和我的 – Manuel

+0

[看這裏](http://ideone.com/JSceEZ)來查看你的函數的語法錯誤。 – jxh

+0

這是一個錯字錯誤,但它仍然給我相同的輸出 – Manuel

相關問題