为什么Elixir位串的最后一位默认为1?

时间:2018-05-23 12:48:49

标签: binary elixir bitstring

创建一个3位的位串:

b = <<1 :: 3>>

使用bitstring comprehension来显示每个位的值:

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

输出:

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

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

默认情况下,所有位如何不是0,这可以通过某种方式实现吗?

1 个答案:

答案 0 :(得分:1)

代码

b = <<1 :: 3>>

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

b = <<0 :: 3>>

检查:

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

旁注: e。 G。 b = <<3 :: 3>>将导致3 ≡ 011等的按位表示。