我有一个带有不同代码的表。他们的ID为2的幂。(20、21、22、23 ...)。
根据不同的条件,我的应用程序将为“状态”变量分配一个值。
对于前:

状态= 272(即28+ 24)
状态= 21(即24+ 22 + 20)

如果Status = 21,则我的方法(C#)应该告诉我21是16 + 4 + 1的总和。

最佳答案

for (uint currentPow = 1; currentPow != 0; currentPow <<= 1)
{
   if ((currentPow & QStatus) != 0)
      Console.WriteLine(currentPow); //or save or print some other way
}

对于QStatus == 21,它将给出
1
4
16

说明:
2的幂在其二进制表示形式中仅具有一个1。我们将那个取为最右边的那个(最低有效),然后将其迭代向左推(更有效),直到数字溢出并变成0。每次我们检查currentPow & QStatus不为0时。

关于c# - 获取给定数字+ C#的2的幂的和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6754108/

10-11 21:40