为什么可以存储的最小值是Byte(8bit)&不是比特(1比特)?

时间:2011-01-05 18:08:55

标签: memory byte cpu bits

为什么可以存储的最小值是Byte(8bit)&内存中没有比特(1比特)? 即使布尔值也存储为字节。我们是否会将最小的数字压缩到32或64位,就像CPU上的寄存器一样?

4 个答案:

答案 0 :(得分:5)

硬件用于读取块中的数据(字节,后续字和双字)。与访问单个位相比,这提供了更高的效率,并且还提供了更多的寻址范围。因此大多数数据至少与字节边界对齐。存在使用比特序列而不是字节操作的编码,但它们非常罕见。

现在,数据通常与dword(32位)边界对齐。此外,某些硬件(例如ARM)无法访问未对齐的多字节变量,即16位字不能“交叉”双字边界 - 将抛出异常。

答案 1 :(得分:2)

因为计算机在字节级别寻址内存,所以任何小于一个字节的内容都不可寻址。

答案 2 :(得分:1)

处理器访问的基本方法仅限于最小可用寄存器的大小。在大多数体系结构中,该大小为8位。你可以使用这些中的较小部分;例如,C在结构中具有位域特征,这将允许组合仅需要特定位长度的字段。访问仍然需要读取整个字节。

一些旧的异国情调的建筑实际上确实有不同的“字大小”。在这些机器中,10位可能是常见的大小。

最后,处理器几乎总是向后兼容。例如,英特尔从386开始就保持了完整的指令兼容性。如果您采用为386编译的程序,它仍将在i7处理器上运行。更改字大小会破坏兼容性。因此,虽然 可能,但没有制造商会这样做。

答案 3 :(得分:0)

假设我们有由 2 个字符组成的母语,例如 a , b 为了区分两个字符,我们至少需要 1 位,例如 0 代表 char a 和 1 代表 char b

所以如果我们计算字符和特殊字符和符号的数量,有 128 个字符,并且为了区分一个字符和另一个字符,您需要 log2(128) = 7 位和第 8 位进行传输