我正在为 40 张纸牌游戏构建一个模拟器。牌组分为 4 个种子,每个种子有 10 张牌。由于只有 1 个种子与其他种子不同(比如说,红心),我想到了一种非常方便的方法来存储一组 4 张具有相同值的 3 位卡片:前两个表示一个卡片有多少张给定的值被留下,最后一个是一个标记,表明该值的心卡是否仍在套牌中。所以,
{7h 7c 7s} = 101
这使我可以将整个卡组存储在 30 位而不是 40 位的内存上。现在,当我在 C 中编程时,我会分配 4 个字符(每个 1 字节 = 32 位),并使用位操作来处理这些值. 在 C# 中我不能这样做,因为每个字符都是 2 个字节,并且使用位更痛苦,所以,问题是:我必须用来存储所需数据的最小内存量是多少?
PS:请记住,我可能必须在系统内存中分配 100k+ 的这些卡座,因此节省 10 位是相当多的