易百教程

从变量中选择多个位掩码

以下代码在变量中设置一个值,然后使用按位运算符来反转十六进制数字的序列。

示例代码

#include <stdio.h>

int main(void)
{
  unsigned int original = 0xDEAD;
  unsigned int result = 0;
  unsigned int mask = 0xF; // 最右边的四位

  printf("
original = %X", original);

  // 在 result 中插入第一个数字
  result |= original & mask; // 在结果中放右4位

  // 得到第二个数字
  original >>= 4;                   // 原来右转四个位置
  result <<= 4;                     // 为下一个数字腾出空间
  result |= original & mask;        // 在结果中放右4位

  /* 得到第三个数字 */
  original >>= 4;                   // 原来右转四个位置
  result <<= 4;                     // 为下一个数字腾出空间
  result |= original & mask;        // 在结果中放右4位

  printf("\\t result = %X
", result);
  return 0;
}

执行上面示例代码,得到以下结果:

hema@ubuntu:~/book$ gcc main.c
hema@ubuntu:~/book$ ./a.out

original = DEAD         result = DAE