我有一个带有不同代码的表。他们的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/