unsigned char xor4(unsigned char c1, unsigned char c2){
int i = 0;
while(i < 8){
if((getBit(c1, i)^getBit(c2, i)))
setBit(c1,i);
else clearBit(c1, i);
i+=2;
}
return c1;
}
上面的代碼被認爲是一個非常簡單的函數來設置每隔一個位在基於與第二字符每隔一個比特的XOR結果的字符。出於某種原因,這根本行不通。該程序似乎只是忽略我的while循環並返回原始函數。在函數更改變量沒有效果
哦,這裏是我的GETBIT,setBit和clearBit功能。
unsigned char getBit(unsigned char c, int n){
return (c & 1<<n) >> n;
}
unsigned char clearBit(unsigned char c, int n){
c = c & (~(1<<n));
}
unsigned char setBit(unsigned char c, int n){
`c = c | (1<<n);
}
'返回C1^C2;'將是一個更有效的方法照着做。 –
一個重要的問題:究竟是什麼讓你認爲* while循環*不起作用?你怎麼能證實循環實際上工作? –
@ KarolyHorvath的觀點可能有點太微妙。 OP錯誤地認爲while循環沒有執行。一些明智的printfs會驗證它正在執行,但setbit和clearbit調用不會改變c1。 –