26

当我阅读以下摘录时,我正在研究计算系统的要素:

Hack 计算机包括一个黑白屏幕,分为 256 行,每行 512 像素。屏幕内容由从 RAM 地址 16384 (0x400) 开始的8K 内存映射表示。物理屏幕中的每一行,从屏幕的左上角开始,在 RAM 中由 32 个连续的 16 位字表示。因此,顶部 r 行和左侧 c 列的像素映射到位于 RAM[16384 + r * 32 + c%16] 的字的 c%16 位(从 LSB 到 MSB 计数)。要写入或读取物理屏幕的像素,需要读取或写入 RAM 驻留内存映射中的相应位(1 = 黑色,0 = 白色)。

那么,如果屏幕是 256 行,每行 512 个像素,并且每个像素是一个位,那么整个屏幕的 8K 内存映射如何呢?

256 行 * 512 位 = 131072 / 8 位 / 字节 / 1024 字节 / K = 16K

那不是16K内存映射吗?

我能想到的唯一一件事是,因为字长是 16 位,也许这是一个因素?我一直都知道“字节”表示 8 位,但如果它的定义取决于计算机的字长,也许这会为我解开这个谜。有人可以向我解释那段中描述的屏幕是如何用 8K 内存映射而不是 16K 表示的吗?

4

3 回答 3

22

是的,在现代计算中,一个字节总是 8 位。

这本书使用单词,而不是字节

书中明确提到了单词和单词的大小,而没有关于字节的单词(哈哈)。看那句话..is represented in RAM by 32 consecutive 16-bit words.。整个大小以(16 位)字而不是字节表示。

因此,8K 指的是 8 Kilowords。8 KB 将正式写为 8KB,如果在本书中使用该符号的话。

在处理器架构方面,文字非常重要。编程语言中的字通常是 2 字节(或 16 位),但在处理器架构中,它们也可以是 8 位或 32 位,它们指的是处理器工作的数据单元的自然大小,因此有意义的是这本书使用单词而不是字节,因为文本似乎非常面向硬件。

要查看字节和单词之间的关系,请阅读此答案

不同的字节大小

Wikipedia描述了一个字节最初(1960 年代)是如何基于它需要保存的信息大小来描述的,因此 6 位字节可用于(英文)字符,而其他大小的字节可用于不同的数字格式。最初是 6 位用于英文字符,发展到 7 位以支持 ASCII,最终 8 位 IBM System/360 的流行导致全球接受 8 位字节。

字节是表示数据量的软件单元,而字与处理器/内存架构更相关,表示处理器中的工作单元(寄存器)和内存中的可寻址单元。但如今,一个字节总是被认为是 8 位,而字是它的倍数。周围仍有处理器具有不同的字长,但它们是专用处理器。从 PC 到手机和游戏机的普通硬件都遵循该标准。

于 2012-11-28T22:45:59.200 回答
2

在现代术语中,一个字节总是有 8 位。这是自 1993 年以来的 IIRC。ISO/IEC 2382-1:1993。

然而,也有其他位计数到字节 6 位/7 位的系统很常见。然而,还有其他更晦涩的。

归根结底,我认为今天很难找到一台不基于 8 位到一个字节的机器。

于 2018-12-27T04:37:00.737 回答
-5

除了可能在它诞生后的短暂时期之外,一个字节一直是八位。

短语“一千字节”被流行为“一千乘八”,从某种意义上说,您将拥有一个八位“宽”的千字(1024 个可寻址片段)内存,因为每个可寻址片段都是八位.

这个词并不总是八位,但如果不是,它从来没有被称为“八位”,它是“四位”或“十六位”,或者在一些 Burroughs 簿记机的令人震惊的例子中“一-一百二十八'。在另一个极端,霍尼韦尔机器最初的组织方式是,存储中的每一个比特都有一个唯一的地址,所以它们会有这么多的“一公斤一公斤”内存包。

对于您正在谈论的机器,它将具有“8 k x 16”内存,因此是 8K 内存映射,特别是 8Kx16,其中只有 8192 个地址,每个地址都是 16 位宽。

考虑到 ASCII 和 EBCDIC,使用 8 位地址边界来进行高效的文本处理是最便宜的,即使您的机器的寄存器更宽。寄存器更窄的机器就这样灭绝了。

所以,是的,一个字节总是八位,而且几乎总是如此。

于 2014-08-26T20:01:04.093 回答