【发布时间】:2012-09-26 12:44:30
【问题描述】:
我想在 2 个 unsigned char_type 变量之间交换一段位:a 和 b。如果段不是连续的,如何用 C 语言解决它?例如a为011*001*10,输入段长度:5,起始位置pa=5,段从bit7~bit5和bit1~bit0,即是011 10; b为10*011*001,位置pb=6,段从bit6~bit7和bit2~bit0,即10 001 . 2 段具有相同的长度。预期结果应该是这样的:a1= 11000100, b1= 11011001
我尝试使用 2 个临时变量 x 和 y 将交换位存储在 b 和 a 中,然后使用 ^ 完成交换。方法太复杂了。有什么棘手的想法吗?
【问题讨论】:
-
I tried to use 2 temp variables... 你为什么不向我们展示你的尝试? -
仔细检查一下,您是说您有
a=011(001)10和b=10(011)001,并且您想交换一部分位,例如a=011(011)10和b=10(001)001? -
我用了三个临时变量,方法并不复杂。
-
@Mike 我的预期结果是:a1=110(001)10 和 b1=11(011)100。 () 中的位应保留,() 中的位应交换。更清晰易懂?
-
@LihO 我已经更改了问题的内容,并在那里描述了我的想法。