我正在尝试创建一个函数,该函数根据另一个字节的最低有效位(称为密钥)更改给定输入字节 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;
}
我将如何实现这一目标?
任何帮助表示赞赏。