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

时间:2010-06-01 15:17:18

标签: algorithm options bitmask bitflags

对于这个问题相当含糊的性质,我从来没有正式教过编程,而Google在这种情况下对像我这样的自助人员来说是无用的,因为关键词非常模糊。

我正在编写一些函数,将一个选项列表编码并解码为Long,以便它们可以轻松地在应用程序中传递,你知道这样的事情:

  

1 - Apple
  2 - 橙色
  4 - 香蕉
  8 - 梅花   等。

     

在这种情况下,数字11代表Apple,Orange&梅。

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

编辑:感谢所有人,我知道答案会很快得到答案:)

4 个答案:

答案 0 :(得分:12)

Bit Flags。这是一种用作Bitmasking的一部分的技术。

0001 - Apple
0010 - Oranage
0100 - 香蕉
1000 - 梅花

每个1都是标记位。

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

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

答案 1 :(得分:3)

答案 2 :(得分:2)

Bitflags

答案 3 :(得分:1)

通过c#Flags attribute 的帮助我将使用一些字段或一组标记

有点相关,在硬件中也有one-hot encoding虽然这意味着你没有获得标志组合