code: public static int pop(long x) {
    /* Hacker's Delight 32 bit pop function:
     * http://www.hackersdelight.org/HDcode/newCode/pop_arrayHS.cc
     *
    int pop(unsigned x) {
       x = x - ((x >> 1) & 0x55555555);
       x = (x & 0x33333333) + ((x >> 2) & 0x33333333);
       x = (x + (x >> 4)) & 0x0F0F0F0F;
       x = x + (x >> 8);
       x = x + (x >> 16);
       return x & 0x0000003F;
      }
    ***/
  
      // 64 bit java version of the C function from above
      x = x - ((x >>> 1) & 0x5555555555555555L);
      x = (x & 0x3333333333333333L) + ((x >>>2 ) & 0x3333333333333333L);
      x = (x + (x >>> 4)) & 0x0F0F0F0F0F0F0F0FL;
      x = x + (x >>> 8);
      x = x + (x >>> 16);
      x = x + (x >>> 32);
      return ((int)x) & 0x7F;
    }
docs: Returns the number of bits set in the long