【发布时间】:2022-07-14 11:48:26
【问题描述】:
这是我到目前为止的代码?但它不起作用..
uint64_t bit_swap(uint64_t value) {
return ((value & 0xAAAAAAAA) >> 1) |
((value & 0x55555555) << 1);
}
bit_swap(0x1111111111111111) 应该返回 0x2222222222222222 但返回 0x0000000022222222
-
代码到底应该做什么? “交换位”几乎不是很精确。
-
它应该返回具有交换位对的值。抱歉现在将编辑问题
-
您能否举一些输入、预期结果和实际结果的例子?
-
bit_swap(0x1111111111111111) 应该返回 0x2222222222222222 但返回 0x0000000022222222,
-
如果您这样做
& 0xAAAAAAAA,很明显前 32 位将始终为 0,因为它们始终与 0 进行与运算。尝试使用& 0xAAAAAAAAAAAAAAAA
标签: c binary bit-manipulation bitwise-operators