代码之家  ›  专栏  ›  技术社区  ›  Daniel A.A. Pelsmaeker

计算X位位掩码的最快方法?

  •  5
  • Daniel A.A. Pelsmaeker  · 技术社区  · 14 年前

    我已经尝试解决这个问题有一段时间了,但是仅仅用整数算术和位运算符是不行的。不过,我认为这是可能的,而且应该相当容易。我错过了什么?

    问题:用它的 最低有效位设置为1,其余为0。例如,给定数字31,我需要得到一个等于0x7fffff的整数值(31个最低有效位为1,其余为0)。

    (X << Y - 1) ,因此不使用循环。

    3 回复  |  直到 14 年前
        1
  •  6
  •   doublep    14 年前

    试试这个:(1<&书信电报;十) -1个

        2
  •  2
  •   SLaks    14 年前

    试试这个:

    uint.MaxValue >> (32 - something)
    
        3
  •  0
  •   Tomas Petricek    14 年前

    我认为以下措施应该奏效:

    int mask = (int)Math.Pow(2, 31) - 1;
    

    int mask = (1 << 31) - 1;