以下“增量”方法运行良好。但我想知道有没有更快的方法以更少的步骤做到这一点。

    public BitArray Increment(BitArray bArray)
    {
        carry = true;

        for (i = 0; i < 32; i++)
        {
            if (carry)
            {
                if (bArray[i] == false)
                {
                    bArray[i] = true;
                    carry = false;
                }
                else
                {
                    bArray[i] = false;
                    carry = true;
                }
            }
        }
        return bArray;
    }

谢谢....

最佳答案

您可以做出一项非常明显的改进:完成后停止!

public void Increment(BitArray bArray)
{
    for (int i = 0; i < 32; i++)
    {
        bool previous = bArray[i];
        bArray[i] = !previous;
        if (!previous)
        {
            // Found a clear bit - now that we've set it, we're done
            return;
        }
    }
}

或者,如果您真的只有 32 位(并且永远只有 32 位),为什么不直接使用 int 呢?增量那真的很容易!如果需要,您始终可以将其包装在您自己的自定义结构中。

关于c# - 将 BitArray(二进制数)加 1 的最快方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9540673/

10-13 03:14