我需要你的帮助,以了解是否可以使用一个连接5游戏的比特板。因为我看到了很多连接4游戏的例子,但是如果板子很大,比如15x15或19x19,那就什么都没有了。我不明白我怎么能用64位来代表董事会。
谢谢你的帮助
发布于 2013-11-05 11:27:28
哈?
当然,如果你所说的“比特板”只是指“每个单元格使用一位的2D数组”,那么这是可能的。
有时候,如果舍入每一行(或列)是一个完整的字节,这会更容易一些,但您不必这样做。
只要做这样的事情:
#include <stdint.h>
#include <limits.h>
#define WIDTH 22
#define HEIGHT 17
uint8_t bits[(WIDTH * HEIGHT + CHAR_BIT - 1) / CHAR_BIT];它将bits声明为一个字节数组,其字节数足以容纳HEIGHT单元的WIDTH矩阵。
使用示例的值,它将是(22 * 17 + 7) /8或47字节长(假设CHAR_BIT为8)。
发布于 2013-11-05 11:39:50
这是可能的,就像解卷的答案中所解释的那样,但是这样做就否定了位板的主要优势,即在一个CPU指令中对整个数据结构执行逻辑操作。最优情况下,位板的大小将是平台指令集的宽度。
一种可能的解决办法是将板表示为多个较小的“标准”位板(32位或64位,视您的平台而定),并在每个迷你位板上分别应用逻辑操作。例如,一个由15x15组成的板可以分成4块8x8块,例如:
typedef uint64_t miniboard_type; // 8x8 board
typedef struct
{
miniboard_type miniboard[4]; // Larger 15x15 board comprising 4 8x8 boards
} bitboard_type;
bitboard_type bitboard;当然,我认为你可能也需要调整数学和逻辑,以考虑到迷你比特板之间的边缘(这取决于你想对你的主板做什么)。
https://stackoverflow.com/questions/19787788
复制相似问题