【发布时间】:2017-03-13 02:10:57
【问题描述】:
假设我有一个像这样用二进制表示法表示的数字:
<<0:1, 0:1, 0:1, 0:1, 0:1, 1:1, 1:1, 1:1>>
这是数字 7 的二进制表示法,在 shell 中评估它甚至会产生 7:
<<7>>
如何将此二进制转换为 Erlang 整数?我可以将二进制文件转换为列表,并获取其中的单个整数值,但这不适用于需要多个字节的大数字,因为列表将包含二进制文件中每个字节的项目。
【问题讨论】:
-
要解决约瑟夫斯问题,您无需明确写出位。只需计算高位,减去它,乘以 2 并加 1:(N - (1 bsl erlang:trunc(math:log(N)/math:log(2)))) * 2 + 1。
标签: binary numbers erlang base