如何解决Elixir:如何获取 Integer 变量的 bit_size?
像这样:
bit_number = 1
bit_number = bit_number <<< 2
bit_size(bit_number) # must return 3 here
bit_size/1
函数用于“字符串”,而不是用于整数,但在练习中,需要获取整数位的大小。
我正在做一本书的压缩练习(Python 中的经典计算机科学问题,Daivid Kopec),我正在尝试使用 Elixir 进行学习。
解决方法
这有效:
(iex) import Bitwise
(iex) Integer.digits(1 <<< 1,2) |> length
2
但我相信有更好的解决方案。
(正如@Hauleth 提到的,这里的答案应该是 2,而不是 3)
,你可以计算一下你能把它除以多少次:
defmodule Example do
def bits_required(0),do: 1
def bits_required(int),do: bits_required(int,1)
defp bits_required(1,acc),do: acc
defp bits_required(int,do: bits_required(div(int,2),acc + 1)
end
输出:
iex> Example.bits_required(4)
3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。