你的朋友 Eliud 从她的奶奶 Tigist 那里继承了一座农场。 她的奶奶是一位发明家,总爱把事情造得过分复杂。 鸡舍里有一块数字显示屏,上面显示一个编码后的数字,代表所有可以捡到的鸡蛋的位置。
Eliud 想请你写一个程序,显示鸡舍里鸡蛋的实际数量。
位置信息的编码方式如下:
1,空位标0。 _ _ _ _ _ _ _
|E| |E|E| | |E|
_ _ _ _ _ _ _
|1|0|1|1|0|0|1|
89
4
_ _ _ _ _ _ _
| | | |E| | | |
_ _ _ _ _ _ _
|0|0|0|1|0|0|0|
8
1
你的任务是统计一个数字的二进制表示中 1 的个数。
不要使用标准库提供的位计数功能!请改用其他基础工具自己解决。
上面的说明与一个共享仓库保持同步,以确保所有语言 track 的一致性。 本附录会提供补充说明,或在必要时修改说明,以便更好地契合 Clojure track 的目标。
在实现函数时,注意不要使用功能相近的现有内置函数,否则会降低这个练习预期的学习价值。
在 Clojure 中,没有用于统计一个数字中比特位数的内置函数,所以你可以放心地在实现中使用任意 Clojure 函数。
不过,Java 确实为此提供了一个函数:bitCount。