gpt4 book ai didi

c# - 从二维位数组中提取位

转载 作者:行者123 更新时间:2023-11-30 23:07:24 25 4
gpt4 key购买 nike

对于我编写的 Minimax 算法,我想尝试使用按位运算来加快速度。每个游戏状态都保存为一个 UInt128 并描述一个 4x4 的基于图 block 的棋盘。每个图 block 的值可以从 0 到 32(不含),因此每个图 block 5 位。

+-------+-------+-------+-------+
| 0-4 | 5-9 | 10-14 | 15-19 |
+-------+-------+-------+-------+
| 20-24 | 25-29 | 30-34 | 35-39 |
+-------+-------+-------+-------+
| 40-44 | 45-49 | 50-54 | 55-59 |
+-------+-------+-------+-------+
| 60-64 | 65-69 | 70-74 | 75-79 |
+-------+-------+-------+-------+

为了在板上实际执行操作,我需要根据 3x3 的中心从 4x4 中提取一个 3x3 block 。我将如何去做呢?我可以通过简单地通过位移位访问每个单元格来手动执行此操作,但我想知道是否有更快的方法。

提前致谢!

(如果重要,语言是 C#)

最佳答案

位操作非常快。由于使用位移手动执行此操作已经没有问题,请复制 4x4 并将其缩小为 3x3,然后对其执行操作,看看是否存在性能问题。

如果执行您的“操作”意味着只读,这取决于直接访问 4x4 中的位与复制、移位并仍然需要访问 3x3 的成本,那么额外的副本可能会更昂贵。

附带说明一下,由于您使用的是 128 位类型,因此可以使用 byte[16](或 byte[9] 用于 3x3 操作)。这将使访问单个单元格变得更快。

关于c# - 从二维位数组中提取位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47313435/

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