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;
}
上記のコードは、2 番目の文字の 1 つおきのビットを使用した xor の結果に基づいて、1 つの文字の 1 つおきのビットを設定する非常に単純な関数であると想定されています。何らかの理由で、これは単に機能しません。プログラムは、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);
}