gpt4 book ai didi

c++ - 一点列移位

转载 作者:太空狗 更新时间:2023-10-29 20:07:22 24 4
gpt4 key购买 nike

如何移动 8x8 区域中的列?例如,我有一个一个 64 位无符号整数,如下所示:

#include <boost/cstdint.hpp>

int main()
{
/** In binary:
*
* 10000000
* 10000000
* 10000000
* 10000000
* 00000010
* 00000010
* 00000010
* 00000010
*/
boost::uint64_t b = 0x8080808002020202;
}

现在,我想将第一个垂直行移动四次,之后它变成这样:

/** In binary:
*
* 00000000
* 00000000
* 00000000
* 00000000
* 10000010
* 10000010
* 10000010
* 10000010
*/

b == 0x82828282;

仅使用按位运算符可以相对快速地完成此操作吗?

最佳答案

我最好的猜测是:

(((b & 0x8080808080808080) >> 4 * 8) | (b & ~0x8080808080808080)

想法是隔离列位并仅移动它们。

关于c++ - 一点列移位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3189283/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com