如果
这是重复的,请原谅我,但是我需要有人向我解释如何完成以下操作(C 中的按位屏蔽/移位让我感到困惑(
据我了解,我需要将前 4 位与后 4 位切换,但我不确定该怎么做。
这是从期中考试中摘取的问题,已发布以供复习/学习
问题:
我已经声明了两个无符号的字符变量,a 和 b。 假设 已初始化。我想为 b 分配一个值,使得
a 的最低四位是 b 的最高四位,a 的最高四位是 b 的最低四位。编写一行 C 代码来完成此操作。
如果可以的话,请向我解释一下,以便我更好地了解正在发生的事情,谢谢。
按照以下步骤操作:
- 用
a & 0x0F
提取 4 个低阶位a
- 使用
<<
运算符将它们向左移动 4 - 用
a & 0xF0
提取 4 个高阶位a
- 将这些向右移动 4 以使它们与
>>
一起进入低阶位置 - 将这些结果与
|
. - 添加一些括号以确保正确的优先级