![]() |
1
41
使用Flags枚举的好处:
使用标志枚举的负数:
使用位串的负数:
例如,您可能会看到:
|
![]() |
2
23
您不应该创建非标准数据结构来替换标准数据结构(在本例中,是dayofweek内置枚举)。而是扩展现有结构。这基本上与您所说的位标志方法的工作方式相同。
现在您可以执行以下操作:
|
![]() |
3
6
创建一个可以包含工作日组合的类。在类内部,您可以用任何一种方式表示数据,但我肯定会使用标志枚举,而不是字符串。在类外部,您只使用枚举值,实际逻辑封装在类中。 类似:
使用实例:
|
![]() |
4
1
问题应该围绕着人类的眼睛是否真的能看到这个存储值。如果是这样的话,那么某种人类可读的格式显然是很重要的(尽管如此,我会为更大的内容(如实名数组)做一个论证)。 然而,至少在我所构建的所有应用程序中,这种数据都会进入一个很小的领域,再也看不到,除非通过C代码——这意味着位标记绝对是最简单的——它们是人类可读性最高的。 在代码中 . 您的同事确实希望编写一个字符串分析器,将0和1映射到值,而不是使用 内置的 和 使用40年以上 位运算的概念? |
![]() |
5
0
有趣的是,这两种方法完全相同;只有Flags方法更明显。 我个人会带上旗子(尽管可能,根据您的型号,最好将列表存储为一个列表来对抗持有它的人)。 --编辑 我想,要清楚的是,绩效真的不需要考虑你在做什么。所以只要用最可读的。(imho是指名旗)。 |
![]() |
6
0
标志方法是惯用的(也就是经验丰富的程序员所做的和习惯于看到和做的,至少在C/C++/C语言中)。 |
![]() |
no one special · 32位整数缩放,无溢出 7 年前 |
![]() |
Benn Tan · 比特操作:更难翻动硬币 7 年前 |
![]() |
Ganesh Thampi · 使用位运算符将十进制转换为二进制 7 年前 |
![]() |
Ganesh Thampi · 使用位的奇偶程序 7 年前 |
![]() |
datapanda · 三维网格的莫顿反向编码 7 年前 |
![]() |
rubyquartz · 交换无符号短整数的字节 7 年前 |
|
John Proctor · C中位的掩蔽范围 7 年前 |
![]() |
Areg Sarvazyan · 从无符号int中提取位的函数 7 年前 |
|
user9505617 · 按位异或0xFFFFFFFF? 7 年前 |