我对固定大小的位向量如何存储其数据感到困惑。
假设我们有一个位向量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。
答案 0 :(得分:1)
首先,您应该阅读what a bit vector is,以确保我们在同一页上。
位向量不代表ASCII字符,它们代表位。尝试对位向量执行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作为位存储在内存中,所以这两个数组基本相同,除非你的意思是其他的。