8×8位网格(64位值)高效90°左右旋转实现方案咨询
高性能实现8×8 64位网格的90°旋转需求
我持有一个64位值,将其表示为8×8网格,其中右上角为LSB(最低有效位)、左下角为MSB(最高有效位)。示例值0x20E0对应的网格如下:
0x20E0 = [ 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ]
我需要对该网格进行90°左旋转或右旋转,右旋转后的示例值为0x30101,对应网格如下:
// Rotated right. 0x30101 = [ 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ]
目前存在多种实现方式,但多数开销较高。我希望通过旋转简化代码逻辑,但不希望因旋转导致代码性能下降,现寻求相关参考资料。
内容的提问来源于stack exchange,提问作者Simon
相关产品推荐
相关产品推荐

