微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Elixir:如何获取 Integer 变量的 bit_size?

如何解决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 举报,一经查实,本站将立刻删除。