所以,位域。具体来说,大位域。我了解如何在位域中操作单个值,但是我将如何在一个大集合上执行此操作,例如:
uint[] bitfield = new uint[4] { 0x0080000, 0x00FA3020, 0x00C8000, 0x0FF00D0 };
我遇到的具体问题是在整个阵列中进行左右移位。因此,例如,如果我>> 4
在上面的数组上做了一个,我最终会得到:
uint[4] { 0x0008000, 0x000FA302, 0x000C800, 0x00FF00D };
现在,这里的一个(过于)简单化的算法可能看起来像(这是我在运行中编写代码):
int shift = 4;
for (int i = 0; i <= shift; i++) {
for (int j = bitfield.GetUpperBound(0); j > 0; j--) {
bitfield[j] = bitfield[j] >> 1;
bitfield[j] = bitfield[j] + ((bitfield[j-1] & 1) << (sizeof(uint)*8));
}
bitfield[0] = bitfield[0] >> 1;
}
有什么内置的东西可以简化处理这类数据的工作吗?