【问题标题】:Why does the last bit of an Elixir bitstring default to 1?为什么 Elixir 位串的最后一位默认为 1?
【发布时间】:2018-05-23 12:48:48
【问题描述】:

创建一个 3 位的位串:

b = <<1 :: 3>>

使用位串推导显示每个位的值:

for <<x :: 1 <- b>>, do: inspect x

输出:

["0", "0", "1"]

注意最后一位是 1,而不是 0。

为什么默认情况下所有位都不为0,可以通过某种方式实现吗?

【问题讨论】:

  • 嗯。 b = &lt;&lt;0 :: 3&gt;&gt;?无论您是否希望该值为零,只需将其设置为零即可。
  • 哦,天哪。我真是个白痴;全脑放屁。谢谢!
  • 没问题,这发生在我们所有人身上:)
  • 只是为了保持整洁;如果您将评论添加为答案,我会接受。

标签: binary elixir bitstring


【解决方案1】:

代码

b = <<1 :: 3>>

有效地将长度为 3 位的位串设置为值 1 (≡ 001)。要初始化位串以将所有位设置为零,请使用:

b = <<0 :: 3>>

检查:

b = <<0 :: 3>>
for <<x :: 1 <- b>>, do: inspect x
#⇒ ["0", "0", "0"]

旁注: e. G。 b = &lt;&lt;3 :: 3&gt;&gt; 将导致 3 ≡ 011 等的按位表示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 2017-10-31
    • 2019-06-01
    • 2019-07-12
    • 2021-07-03
    相关资源
    最近更新 更多