private static int HighBit(UInt256 value)
{
var parts = value.Parts;
for (var pos = parts.Length - 1; pos >= 0; pos--)
{
var part = parts[pos];
if (part != 0)
{
for (var bits = 63; bits > 0; bits--)
{
if ((part & 1UL << bits) != 0)
return 64 * pos + bits + 1;
}
return 64 * pos + 1;
}
}
return 0;
}
}