3,882
社区成员




uint64 transform(uint64 value, uint64 mask)
{
int c = 0;
uint64 result = 0;
for(int i=0, c=0;i<64;i++)
if(mask & (1ull<<i))
result |= ((value>>i) & 1)<<c++;
return result;
}
uint64 transform2(uint64 value, uint64 mask)
{
uint64 result = 0;
uint64 bm = 1;
int c = 0;
for(int i = 0; i < 64; i++)
{
if(mask & bm) result |= ((value >> i) & 1) << c++;
bm <<= 1;
}
return result;
}