private UInt32 BitReverse(UInt32 value)
{
UInt32 left = (UInt32)1 << 31;
UInt32 right = 1;
UInt32 result = 0;
for (int i = 31; i >= 1; i -= 2)
{
result |= (value & left) >> i;
result |= (value & right) << i;
left >>= 1;
right <<= 1;
}
return result;
}