- val = (val & 0x33333333ULL) + ((val >> 1) & 0x33333333ULL);
- val = (val & 0x0F0F0F0FULL) + ((val >> 1) & 0x0F0F0F0FULL);
- val = (val & 0x00FF00FFULL) + ((val >> 1) & 0x00FF00FFULL);
- val = (val & 0x0000FFFFULL) + ((val >> 1) & 0x0000FFFFULL);
+ val = (val & 0x33333333ULL) + ((val >> 2) & 0x33333333ULL);
+ val = (val & 0x0F0F0F0FULL) + ((val >> 4) & 0x0F0F0F0FULL);
+ val = (val & 0x00FF00FFULL) + ((val >> 8) & 0x00FF00FFULL);
+ val = (val & 0x0000FFFFULL) + ((val >> 16) & 0x0000FFFFULL);