背景
整数的汉明权重是其二进制表示形式中的1的数量。对于此挑战,整数用32位表示,并且它们是无符号的。
挑战
给定0到2 ^ 32-1之间的整数(不包括在内),请在相同范围内以及汉明权重相同的情况下输出另一个整数。
例子
Input (Decimal) | Input (Binary) | Hamming weight | Possible output (Decimal)
46 | 0b0010 1110 | 4 | 15
12 | 0b0000 1100 | 2 | 3
1 | 0b0000 0001 | 1 | 2
3 | 0b0000 0011 | 2 | 6
2^31 | 0b1000....0 | 1 | 1
2^31+2 | 0b1000...10 | 2 | 3
2^32-5 | 0b1111..011 | 31 | 2^31-1
2^32-2 | 0b1111....0 | 31 | 2^31-1
0 | 0b0000 0000 | 0 | None (This case need not be handled)
2^32-1 | 0b1111....1 | 32 | None (This case need not be handled)
计分
这是代码高尔夫球,因此每种语言中以最少字节数表示的解决方案将获胜。
2^31+2
,我将重复说一个奇数。在问题的答案只有失败的时候都在最高和最低位的1
。