0

我有点困惑固定大小的位向量如何存储其数据。假设我们有一个bv要存储hello为 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]

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

4

1 回答 1

1

首先,您可能应该阅读什么是位向量,以确保我们在同一页上。

位向量不代表 ASCII 字符,它们代表bits。尝试对bv[0]=104位向量进行操作可能无法编译/运行,或者,如果确实如此,则不太可能达到您的预期。

您期望得到支持的操作类似于set the 5th bit to 1, set the 10th bit to 0, set all these bit to this,OR the bits of these two vectors可能还有其他一些。

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

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

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

你应该知道的另一件事——即使 ASCII 被存储为内存中的位,所以这两个数组本质上是相同的,除非你的意思是别的。

于 2013-05-23T20:26:54.017 回答