Algorithm 使用base-2数字编码唯一选项列表的技术有没有名字?

Algorithm 使用base-2数字编码唯一选项列表的技术有没有名字?,algorithm,options,bitmask,bitflags,Algorithm,Options,Bitmask,Bitflags,我为这个问题的模糊性道歉,我从来没有被正式教过编程,谷歌对于像我这样的自助者来说是毫无用处的,因为关键词非常模糊 我正在编写两个函数,将选项列表编码并解码为长格式,以便在应用程序中轻松传递,您知道这类事情: 1-苹果 2-橙色 4-香蕉 8-李子 等等 在这种情况下,数字11代表苹果、橘子和李子 我已经让它工作了,但我看到它一直在使用,所以假设这项技术有一个共同的名字,毫无疑问,各种各样的最佳实践和聪明的算法都是我目前无法做到的 编辑:多亏了大家,我知道答案会很快出现:)位标志。这是一种用于位屏

我为这个问题的模糊性道歉,我从来没有被正式教过编程,谷歌对于像我这样的自助者来说是毫无用处的,因为关键词非常模糊

我正在编写两个函数,将选项列表编码并解码为长格式,以便在应用程序中轻松传递,您知道这类事情:

1-苹果
2-橙色
4-香蕉
8-李子
等等

在这种情况下,数字11代表苹果、橘子和李子

我已经让它工作了,但我看到它一直在使用,所以假设这项技术有一个共同的名字,毫无疑问,各种各样的最佳实践和聪明的算法都是我目前无法做到的


编辑:多亏了大家,我知道答案会很快出现:)

位标志。这是一种用于位屏蔽的技术

0001-苹果
0010-Oranage
0100-香蕉
1000-李子

每个1都是标记位

现在,您可以使用以下数字轻松执行按位操作:

if((11 & Apple) == Apple) // The Apple Flag is set
{
    // Do Something
}
位标志


位字段:

通过c的帮助,我将使用位字段或一组标志


有点相关,在硬件中也有,虽然这意味着你没有设置标志组合

@Martin-是的…在我看到评论之前已经更改了。好的,但是用paren按位排列,你没有弄错优先顺序吗?(9&Orange==Orange)计算结果为TRUE,其中应为false。它应该是((9&Orange)==Orange),它的计算结果为FALSE@Andy-显然是这样。固定的。