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

Why does the last bit of an Elixir bitstring default to 1?

创建 3 位的位串:

b = <<1 :: 3>>

使用位串理解来显示每个位的值:

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

输出:

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

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

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

代码

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 = <<3 :: 3>> 将导致按位表示 3 ≡ 011