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

Data structures 数据如何存储在位向量中?,data-structures,language-agnostic,bitvector,Data Structures,Language Agnostic,Bitvector,我有点困惑固定大小的位向量如何存储数据。 假设我们有一个位向量bv,我想将它存储为ASCII 所以我们做了bv[0]=104,bv[1]=101,bv[2]=108,bv[3]=108,bv[4]=111 hello的ASCII码如何在位向量中表示 它是这样的二进制文件:[01101000][01100101][01101100][01101100][01101111] 或者像这样的ASCII码:[104][101][108][108][111] 在下面的第3.5节第2步中,作者将ascii码分

我有点困惑固定大小的位向量如何存储数据。 假设我们有一个位向量
bv
,我想将它存储为ASCII

所以我们做了
bv[0]=104
bv[1]=101
bv[2]=108
bv[3]=108
bv[4]=111

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

它是这样的二进制文件:
[01101000][01100101][01101100][01101100][01101111]

或者像这样的ASCII码:
[104][101][108][108][111]


在下面的第3.5节第2步中,作者将ascii码分配给位向量,但我不知道字符在位向量中是如何表示的。

首先,您可能应该继续阅读,以确保我们在同一页上

位向量不表示ASCII字符,它们表示位。试图在位向量上执行
bv[0]=104
,可能不会编译/运行,或者,如果这样做,它就不太可能执行您期望的操作

您希望支持的操作包括
将第5位设置为1
将第10位设置为0
将所有这些位设置为该
或这两个向量的位
,可能还有其他一些操作

如何将它们实际存储在内存中完全取决于编程语言,最重要的是,它甚至可能完全取决于该语言的给定实现

一般的共识(不是规则)是,每个位应该占用内存中大约1位(平均而言,可能稍多一些,因为存储这些位可能会有开销)

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


另一件事你应该知道-即使是ASCII也会以位的形式存储在内存中,因此这两个数组本质上是相同的,除非你是指其他数组。

我相信这取决于它内部表示的语言。好的。让我们忘掉bv[x]=一些ASCII。你能用位向量来存储hello吗?或者任何数据类型,理论上如何表示,而不是在内存中?我在某个地方读到,位向量用于表示不同的数据类型,如字符串、整数等,但不知道这是怎么可能的。如果你在第3.5节看了这篇文章并阅读了第2步,我仍然感到困惑。他们使用位向量来存储ascii字符。@msr老实说,我看不出这篇文章所描述的内容与字符数组有什么不同(不是因为我有足够的时间彻底阅读整个内容,以便现在就完全理解),所以它是一个大小为6的数组,每个元素的大小为1字节/8位,每个代表1个ASCII字符。我认为这篇论文对于理解这个问题至关重要,如果你想要一个更好、更具体的答案,你可以把它放在你的问题中(最好把整个步骤2复制到问题中,而不是仅仅链接到它)。这也是我理解它的方式。但由于位向量由0和1组成,所以我认为每个字符在位向量的每个桶中都表示为二进制。无论如何,谢谢你的帮助。:)