Elixir:如何获取整数变量的 bit_size?
Posted
技术标签:
【中文标题】Elixir:如何获取整数变量的 bit_size?【英文标题】:Elixir: How to get bit_size of an Integer variable? 【发布时间】:2021-08-08 00:50:48 【问题描述】:我需要获取一个整数变量中使用的位大小。
像这样:
bit_number = 1
bit_number = bit_number <<< 2
bit_size(bit_number) # must return 3 here
bit_size/1
函数用于“字符串”,而不是整数,但在练习中,需要获取整数的位数。
我正在做一本书的压缩练习(Python 中的经典计算机科学问题,Daivid Kopec 的),我正在尝试在 Elixir 中进行学习。
【问题讨论】:
为什么是bit_size(bit_number) == 3
?据我所知,它应该返回2
,因为它正是2
aka 0b10
。
天哪,是的.. 我写了 1... tks。我的错误我会改正的
【参考方案1】:
你可以数一数你能把它除以多少次:
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, acc), do: bits_required(div(int, 2), acc + 1)
end
输出:
iex> Example.bits_required(4)
3
【讨论】:
【参考方案2】:这行得通:
(iex) import Bitwise
(iex) Integer.digits(1 <<< 1, 2) |> length
2
但我确信有更好的解决方案。
(正如@Hauleth 提到的,这里的答案应该是 2,而不是 3)
【讨论】:
以上是关于Elixir:如何获取整数变量的 bit_size?的主要内容,如果未能解决你的问题,请参考以下文章