给定两个无符号字符变量,将A的最低4位分配为B的最高4位,将A的最高4位分配为B的最低4位。

时间:2018-03-08 00:26:55

标签: c bit-manipulation

请原谅我,如果这是重复的,但是我需要有人向我解释如何完成以下操作(C中的按位掩蔽/移位让我困惑)

根据我的理解,我需要用最后4位切换前4位,但我不确定该怎么做。

这是一个针对审核/研究目的而发布的期中考试的问题

问题:

我已经声明了两个unsigned char变量a和b。假设a已初始化。我想为b赋值,使a的最低4位是b的最高4位,a的最高4位是b的最低4位。

编写一行C代码来完成此任务。

如果可以,请向我解释,以便我能更好地了解发生的事情,谢谢。

1 个答案:

答案 0 :(得分:1)

请按照以下步骤操作:

  • 使用a
  • 提取a & 0x0F的4个低位
  • 使用<<运算符
  • 将它们向左移动4
  • 使用a
  • 提取a & 0xF0的4个高位
  • 将这些权利向右移动4,将其带到>>
  • 的低位置
  • 将这些结果与|合并。
  • 添加一些括号以确保正确的优先顺序