キーと呼ばれる別のバイトの最下位ビットに応じて、特定の入力バイト c1 のビットを変更する関数を作成しようとしています。
key の最下位ビットに 1 がある場合、対応するミラー ビット位置に従って c1 のビットを交換する必要があります。
たとえば、
key = 0110 1010、最下位ビットとして 1010 だけを気にします。
c1 = 0010 1011
1010 によると、c1 の 1 番目の位置を 6 番目に、3 番目の位置を 4 番目に交換する必要があります。
c1 は 0111 0001 になるはずです。
これは私がこれまでに行ったことです:
unsigned char swapBits(unsigned char c1, unsigned char key){
for(int i = 0; i < 4; i++){
key = (key >> i);
if(key & 1){
/* swap bits here */
}
}
return c1;
}
どうすればこれを達成できますか?
どんな助けでも感謝します。