数据如何存储在位向量中?

时间:2013-05-23 20:00:38

标签: data-structures language-agnostic bitvector

我对固定大小的位向量如何存储其数据感到困惑。 假设我们有一个位向量bv,我希望将hello存储为ASCII。

我们bv[0]=104bv[1]=101bv[2]=108bv[3]=108bv[4]=111

如何在位向量中表示hello的ASCII?

它是否像这样二进制:[01101000][01100101][01101100][01101100][01101111]
或者像这样的ASCII:[104][101][108][108][111]

以下论文HAMPI在第3.5节第2步中,作者将ascii代码分配给位向量,但我很困惑如何在位向量中表示char。

1 个答案:

答案 0 :(得分:1)

首先,您应该阅读what a bit vector is,以确保我们在同一页上。

位向量不代表ASCII字符,它们代表。尝试对位向量执行bv[0]=104可能无法编译/运行,或者,如果确实如此,则非常不太可能按预期执行。

您希望获得支持的操作符合set the 5th bit to 1set the 10th bit to 0set all these bit to thisOR the bits of these two vectors以及其他一些操作。

这些实际存储在内存中的方式完全取决于编程语言,最重要的是,它甚至可能完全取决于该语言的给定实现。

一般一致(不是规则)是每个位应该在内存中占用大约1位(平均而言,可能稍微多一点,因为可能存在与存储这些相关的开销)。

作为一个例子(Java如何做),你可以拥有一个64位数字的数组,并在每个位置存储64位。在这种情况下,转换为ASCII是没有意义的。

你应该知道的另一件事 - 即使ASCII作为位存储在内存中,所以这两个数组基本相同,除非你的意思是其他的。