下面的“增量”方法可以正常工作。但是我想知道有没有更快的方法可以以更少的步骤完成此任务。
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)
谢谢....
您可以做出一个非常明显的改进:完成后停止!
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?递增那真的很容易!如果需要,您始终可以将其包装在自己的自定义结构中。