从给定位置反转字节的N个位数

时间:2017-02-28 01:57:28

标签: bit-manipulation bit

在给定的8位/ 32位中,从给定的位更高位置,将位反转到给定的较低位置并保存。 例, Reverse_specific_bits(char * data,int pos,int num_of_bits)

职位 - 5

要反转的位数= 5

鉴于数据 - 01 01101 1

结果位 - 01 10110 1

任何人都可以帮我写一个函数。

此致 维涅什

1 个答案:

答案 0 :(得分:3)

最简单的方法是,

  1. 保存前缀修复并修复不在两个单独队列中更改的位。
  2. 迭代需要反转的位并将它们推入堆栈。
  3. 获取一个新队列并推送前缀位队列,然后推送堆栈,最后推送后修复队列。
  4. 这是一种非常天真和最简单的方法。有很多有效的方法可以做到这一点。