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


如果

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

据我了解,我需要将前 4 位与后 4 位切换,但我不确定该怎么做。

这是从期中考试中摘取的问题,已发布以供复习/学习

问题:

我已经声明了两个无符号的字符变量,a 和 b。 假设 已初始化。我想为 b 分配一个值,使得

a 的最低四位是 b 的最高四位,a 的最高四位是 b 的最低四位。

编写一行 C 代码来完成此操作。

如果可以的话,请向我解释一下,以便我更好地了解正在发生的事情,谢谢。

按照以下步骤操作:

  • a & 0x0F提取 4 个低阶位a
  • 使用<<运算符将它们向左移动 4
  • a & 0xF0提取 4 个高阶位a
  • 将这些向右移动 4 以使它们与 >> 一起进入低阶位置
  • 将这些结果与| .
  • 添加一些括号以确保正确的优先级

最新更新