【问题标题】:Is a byte always 8 bits?一个字节总是8位吗?
【发布时间】:2012-11-16 22:26:44
【问题描述】:

当我阅读以下摘录时,我正在处理The Elements of Computing Systems

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

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

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

那不是 16K 内存映射吗?

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

【问题讨论】:

标签: byte bits


【解决方案1】:

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

本书使用的是文字,而不是字节

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

因此,8K 指的是 8 Kilowords。 8 KB 将正式写成 8KB,如果本书中完全使用这种表示法的话。

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

要了解字节和字的关系,请阅读this answer

不同的字节大小

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

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

【讨论】:

  • 从来没有人有 7 或 9 位字。字宽几乎总是 2 的幂,可能允许奇偶校验或排除奇偶校验位。 9 位宽的内存没有 9 位,额外的位会自动计算奇偶校验,因此只有 8 位可用。而当只有 7 个可访问位时,这是因为 8 位字节中的一个位被固定用于计算奇偶校验。这些仍然是八位字节。
  • @JonJayObermark - 你错了。几乎每一个可能的字长都曾经被使用过。在 1970 年之前,平价是一种奢侈品,很少有人能负担得起。
  • 例如...给我一台真正的机器,它有字(不是位集合,而是寻址字)并选择使它们的位长为奇数。现在奇偶校验也几乎无关紧要,但由于过去内存质量低,它很重要。我从 70 年代开始使用的每台机器,甚至是手持视频游戏,都内置了奇偶校验功能。在集成电路之前,我们谈论的不是同一个意义上的词。
  • @JonJayObermark - 我在 IBM ca 1975 中使用了两个不同的 micros。一个有 15 位字(所以 16 位中可能有一个奇偶校验位),另一个有 17 位字(到有效地使用 9 位“字节”RAM 并具有 1 位奇偶校验位)。
  • @JonJayObermark - 当每个人和他的兄弟都在设计一个微型计算机时,这是为了从可用的门中挤出尽可能多的功能。此范围内的大多数微机都被视为支持模拟器,在模拟器中,额外的一点通常会非常强大。
【解决方案2】:

除了造币后的一小段时间,一个字节一直是八位。

短语“一千字节”被普及为“一千乘八”,意思是您将拥有一个千字(1024 个可寻址片段)的内存,它是八位“宽”,每个可寻址片段是八位。

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

在您所说的机器的情况下,它将具有“8 k x 16”内存,因此是 8K 内存映射,特别是 8Kx16,其中只有 8192 个地址,每个地址都是 16 位宽。

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

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

【讨论】:

  • 你有的参考吗“'一千字节'这个短语起源于'一千八'”听起来不错,但研究字节的词源表明这是BS ,而不是 CS!
  • 这是传闻,我认为是“黑客词典”。我们知道它最初是“bite”,IBM 的某个人故意更改了拼写以避免混淆。但为什么一开始会听到“咬”呢?
  • 我猜的论点是,如果这不是影响,为什么六位字不也称为“咬”?你确实(也许是,我自 1987 年以来没有做过硬件)以这种方式指定内存:16Kx9,用于过去用于小型机器的奇偶校验内存块。
  • 它现在意味着 8 位,但我可以找到大量证据表明它曾经是一个模棱两可的、依赖于平台的术语。
  • 你不能说这个词起源于 by-8,除非创造它的人这么说。其他人可能会想出这个作为一种方便的记忆方式,但这不能改变起源。
【解决方案3】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-04-01
    • 1970-01-01
    • 2012-08-21
    • 2023-02-24
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    • 2013-12-14
    相关资源
    最近更新 更多