代码之家  ›  专栏  ›  技术社区  ›  Jonathan.

枚举的对立面(使用公式)(objective-c)

  •  0
  • Jonathan.  · 技术社区  · 15 年前

    我有4个数字0-3,这是一个枚举(objective-c),我想用一个公式得到相反的结果。因此,如果将0放入公式,则返回2,如果输入2,则返回0(与1和3相同)。

    原因是(它与编程有关),我想得到枚举的相反部分,而不必执行if或switch语句。但这意味着任何公式(如果可能的话)都必须解压,这样比使用if或switch更有效。

    2 回复  |  直到 15 年前
        1
  •  7
  •   Guffa    15 年前

    公式非常简单:

    n = n ^ 2;
    

    0-3的位值以及异或如何更改它们:

    n       ^10
    ---------------
    0 = 00 : 10 = 2
    1 = 01 : 11 = 3
    2 = 10 : 00 = 0
    3 = 11 : 01 = 1
    

    测试(用C书写):

    for (int n = 0; n <= 3; n++) {
      Console.WriteLine("{0} : {1}", n, n ^ 2);
    }
    

    输出:

    0 : 2
    1 : 3
    2 : 0
    3 : 1
    
        2
  •  0
  •   Eiko    15 年前
    int newValue = 3 - originalValue;
    

    可能转换为枚举类型。

    对于0<=&燃气轮机;2和1<=&燃气轮机;3您可以使用

    int newValue = (originalValue + 2) % 4;