【发布时间】:2019-08-09 06:11:55
【问题描述】:
bool 需要 8 位来存储标志:true 或 false。 Bitvector32 允许您以 32 位存储 32 个标志。所以 32 个布尔标志将是 256 位。
不过……
Bitvector32 要求您为要寻址的每个位声明一个整数掩码。该掩码是一个整数,或 32 位 -- 32 个掩码乘以 32 位 + 32 位向量 32 位 = 32 个标志的 1056 位。
如果位掩码超过了标志的有效存储,那么 bitvector32 的意义何在?
【问题讨论】:
-
我投票决定重新开放,因为这个问题是基于一个错误的前提,对于
BitVector32的意义实际上并不是一个意见问题。 -
我非常希望,并期望我的理解是有缺陷的。我不是在宣传意见,而是提出我的(有限的)理解以寻求更准确的理解。如果这个问题是基于一个错误的前提,我想知道错误在哪里。谢谢。
-
您的问题中至少有两个错误前提:
bool类型在 C# 中需要 32 位,而不是 8 位。此外,无论您如何存储位标志,您都需要知道 which bit 与 which flag 搭配。BitVector32类型不会添加到此;这与任何基于位的标志实现的要求相同。BitVector32类型只是让操作更方便(而且就我个人而言,我不相信它更方便......处理位标志并不难开始)。
标签: c# performance flags