将BitArray(二进制数)加1的最快方法?

hmd*_*mdb 3 c#

下面的“增量”方法可以正常工作。但是我想知道有没有更快的方法可以以更少的步骤完成此任务。

    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;
    }
Run Code Online (Sandbox Code Playgroud)

谢谢....

Jon*_*eet 5

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

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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

另外,如果您实际上只有32位(并且永远只有32位),为什么不只使用an int?递增真的很容易!如果需要,您始终可以将其包装在自己的自定义结构中。