Design patterns 行业如何将多个布尔值状态存储在一个整数中?

Design patterns 行业如何将多个布尔值状态存储在一个整数中?,design-patterns,terminology,Design Patterns,Terminology,这里有一个简单的问题 行业如何将多个布尔值状态存储在一个整数中 SetWindowPos api就是一个例子 SWP_NOSIZE DEFINE 1 SWP_NOMOVE DEFINE 2 SWP_NOZORDER DEFINE 4 SWP_NOREDRAW DEFINE 8 SWP_NOACTIVATE DEFINE 16 SWP_NOSIZE定义1 SWP_NOMOVE定义2 SWP_NOZORDER定义4 SWP_NOREDR

这里有一个简单的问题

行业如何将多个布尔值状态存储在一个整数中

SetWindowPos api就是一个例子

SWP_NOSIZE DEFINE 1 SWP_NOMOVE DEFINE 2 SWP_NOZORDER DEFINE 4 SWP_NOREDRAW DEFINE 8 SWP_NOACTIVATE DEFINE 16 SWP_NOSIZE定义1 SWP_NOMOVE定义2 SWP_NOZORDER定义4 SWP_NOREDRAW定义8 SWP_未激活定义16 如果整数为11,则1、2和8(
SWP_NOSIZE
SWP_NOMOVE
SWP_NOREDRAW
)处于启用状态

这个模式的流行词是什么?

a

我一直称之为“位标志”,因为它们是标志,每个位有一个标志。这看起来相当标准,尽管我不能保证它有多标准…

我一直称之为“位标志”,因为它们是标志,并且每个位有一个标志。这看起来相当标准,尽管我不能保证标准有多高…

我也喜欢“旗帜”。这个术语在许多2的幂进行OR运算的地方被一致地使用(举个例子,.NET中的System.Reflection.BindingFlags以及其他许多地方)

术语“位字段”具有特定含义,例如C结构中的位字段-但在上述示例中没有此类结构;程序员选择使用整数来代替。

我也更喜欢“标志”。这个术语在许多2的幂进行OR运算的地方被一致地使用(举个例子,.NET中的System.Reflection.BindingFlags以及其他许多地方)


术语“位字段”具有特定含义,例如C结构中的位字段-但在上述示例中没有此类结构;程序员选择使用整数来代替。

对于一般情况,这是我的首选。“位字段”只应在位适合机器字时使用(否则您有一个“位数组”)。字段更好,因为有时您将位配对以保存3状态和4状态数据(以及更大的组合)。对于一般情况,这是我的首选。“位字段”只应在位适合机器字时使用(否则您有一个“位数组”)。字段更好,因为有时您将位配对以保存3状态和4状态数据(以及更大的组合)。