我很难考虑如何交换给定 8 位数字的中间 4 个值,同时保留中间每一侧的 2 位。这是一个图表:
给定一个 8 位数字 |76543210|,将 2 与 4 交换,将 3 与 5 交换。但是,您还必须保留数字 7、6、1 和 0。
这是我目前正在做的伪代码(这可能比我实际需要做的要复杂得多;我是按位运算的新手)
mask1 = 00001100
mask2 = 00110000
temp1 = (original number) AND mask1 // Extract only the bits we care about swapping.
temp2 = (original number) AND mask2
temp1 << 2 // Perform the swap of the inner four bits.
temp2 >> 2
swapped = temp1 OR temp2 // The final swapped number, but the outer digits
// haven't been preserved.
是否有我会使用的面具或其他东西来确保在轮班发生后外部数字得到恢复?
现在我在想我可能会将中间的 4 位数字归零,然后做(原始数字)或交换,但这似乎很老套。
感谢您对此的任何帮助!