【问题标题】:Significance of Bytes as 8 bits字节的意义为 8 位
【发布时间】:2015-12-25 16:52:20
【问题描述】:

我只是想知道为什么 A BYTE IS 8 BITS 的原因?
具体来说,如果我们谈论 ASCII 字符集,那么它的所有符号都可以只表示 7 位,留下一个备用位(实际上 8 位是 1 个字节)。

所以如果我们假设有一家大公司,其中每个人都同意只使用 ASCII 字符集而没有其他任何东西(而且这家公司不必与外界做任何事情),那么在这家公司中,开发人员无法开发能够将 7 位视为 1 字节,因此 节省一个宝贵的位
如果这样做,他们可以为每 10 个字节节省 10 位空间(这里 1 个字节又是 7 位)等等, 最终有很多很多宝贵的空间。
这家公司使用的硬件(硬盘、处理器、内存)特别知道它需要存储 & 并将 7 位捆绑在一起作为 1 个字节。
如果这样做在全球范围内,这不能彻底改变计算机的未来。
这个系统可以在现实中开发吗?
这不是很有效吗?

【问题讨论】:

  • 8 是 2 的方便幂,而 7 不是。使用二进制系统 8 更有意义。
  • 我同意这一点,但你能具体说明一下 8 如何更有意义吗?而且这家公司的硬件也可以使用 7 位作为一组。
  • 我想stackoverflow.com/questions/5516044/… 会回答你的问题。
  • @Crt 是的,但我真的很感激关于这个话题的清晰解释:)
  • 所以你假设所有的数字信息都可以整齐地组织为 ascii 文本?打开任何可执行文件(或任何纯文本文件)并解释您看到的内容。

标签: byte computer-science bit computer-architecture


【解决方案1】:

byte 不一定是 8 位。字节 数字信息的单位,其大小取决于处理器。从历史上看,字节的大小等于处理器支持的字符编码指定的字符大小。例如,支持Binary-Coded Decimal (BCD) 字符的处理器将一个字节定义为4 位。支持ASCII 的处理器将一个字节定义为 7 位。使用字符大小来定义字节大小的原因是为了使编程更容易,考虑到字节一直(据我所知)被用作数据存储的最小可寻址单元。仔细想想,你会发现这确实很方便。

在非常成功的IBM S/360 计算机系列中,一个字节被定义为 8 位,它使用称为 EBCDI 的 8 位字符编码。 IBM 通过其 S/360 计算机引入了几项至关重要的计算技术,这些技术成为所有未来处理器的基础,包括我们今天使用的处理器。事实上,字节一词是由 IBM 的计算机科学家 Buchholz 创造的。

当英特尔推出其第一个 8 位处理器 (8008) 时,即使指令集不直接支持任何字符编码,一个字节也被定义为 8 位,从而打破了这种模式。然而,处理器提供了许多对压缩(4 位)和未压缩(8 位)BCD 编码数字进行操作的指令。事实上,整个 x86 指令集设计都是基于 8 位字节方便地设计的。 7 位 ASCII 字符适合 8 位字节这一事实是一个免费的额外优势。像往常一样,一个字节是最小的可寻址存储单元。我想在这里提一下,在数字电路设计中,将线或引脚的数量设置为 2 的幂是很方便的,这样作为输入或输出出现的每个可能的值都有用处。

后来的处理器继续使用 8 位字节,因为它使基于旧设计开发新设计变得更加容易。它还有助于使新处理器与旧处理器兼容。因此,寄存器、数据总线、地址总线的大小每次都翻倍(现在我们达到了 64 位),而不是改变字节的大小。这一倍增使我们能够轻松使用现有的数字电路设计,从而显着降低处理器设计成本。

【讨论】:

  • 完美详细的答案.. 非常感谢.. 只是一件事.. 请您再解释一下 64 位架构和 1 字节(8 位)之间的关系。真的很有帮助
  • @Brut3Forc3 64 位指令集架构可以使用单个指令对 64 位数据项进行算术运算。这也意味着通用寄存器的大小是 64 位的。但是,数据总线或地址总线的大小可能是也可能不是 64 位(可能更小或更大)。 64 位架构无法使用单个指令对大于 64 位的数据项执行算术运算。自 Intel 8008 以来,一个字节只有 8 位,被认为是一种标准 (IEC 80000-13)。
  • 但是 1byte(8 bits) 是从哪里来的呢?
  • @Brut3Forc3 它是最小的可寻址存储单元。例如,如果我们有一个 48 位地址总线,那么每个 48 位值都是唯一字节的地址。因此,处理器可以访问的最大内存量为 2^48 字节。
  • @Brut3Forc3 地址的大小是 48 位或 48/8 = 6 字节。但是,存储在该地址的数据项的大小是单个 8 位字节。
【解决方案2】:

它是 8 位而不是 7 的主要原因是它需要是 2 的幂

另外:想象一下 nibbles 在 7 位字节中的样子..

对于与十六进制之间的转换也是理想的(且快速)。

更新

如果我们有 2 的幂,我们会得到什么好处...请解释一下

首先,让我们区分BYTEASCII character。这是两个不同的东西。

字节用于以优化的方式存储和处理数字信息(数字),而字符是(或应该是) ) 仅用于与我们人类互动,因为我们发现很难阅读二进制文件(尽管在 big-databig-internetspeedbig -clouds,甚至服务器也开始通过文本(xml、json)相互交谈,但这是完全不同的故事……)。

至于 字节是 2 的幂,简短的回答:

具有 2 的幂的优势在于,数据可以很容易地在字节或整数边界上有效对齐 - 对于 1、2、4 和 8 位的单个字节,并且使用更高的幂会变得更好2 个。

与 7 位 ASCII(或 7 位 字节)比较:7 是质数,这意味着只有 1 位和 7 位值可以以对齐的形式存储.

当然,人们可以想到的原因还有很多(例如 CPU/MCU 内部的逻辑门和多路复用器的布局和结构)。

假设您要控制多路复用器上的输入或输出引脚:通过 2 条控制线(位),您可以寻址 4 个引脚、3 个输入、8 个引脚 可以使用 4 -> 16,.. - 地址行同上。所以你看的越多,使用 2 的幂就越有意义。它似乎是最有效的模型。

至于优化的 7 位 ASCII

即使在具有 8 位字节的系统上,7 位 ASCII 也可以通过一些位移位轻松压缩。可以创建带有 operator[]Class,而无需 7 位字节(当然,简单的压缩会更好)。

【讨论】:

  • 如果我们有 2 的幂,我们有什么优势...请解释一下
  • @Brut3Forc3 为什么我们有 100 美元的钞票而不是 99 美元的钞票?
  • @Brut3Forc3 - 查看更新,主要原因是对齐(例如 7 是质数)。
猜你喜欢
  • 2013-09-29
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 2013-04-26
  • 2011-01-15
相关资源
最近更新 更多