hamming weight - shift and add