以下“增量”方法运行良好。但我想知道有没有更快的方法以更少的步骤做到这一点。
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/