字节作为 8 位的意义
Significance of Bytes as 8 bits
我只是想知道为什么 一个字节是 8 位?
具体来说,如果我们谈论 ASCII 字符集,那么它的所有符号都可以只用 7 位表示,剩下一个备用位(实际上 8 位是 1 个字节)。
因此,如果我们假设有一家大公司,其中每个人都同意只使用 ASCII 字符集而不使用其他任何东西(而且这家公司不必与外界做任何事情)那么就不能在这个公司开发人员开发的软件将 7 位视为 1 字节,因此 节省了一位宝贵的位 ,
如果这样做,他们可以节省例如 10 位 space 每10个字节(这里1个字节又是7位)等等,最终很多很多宝贵的space。
这家公司用的硬件(硬盘,处理器,内存)具体知道它需要存储 & 并将 7 位组合在一起作为 1 个字节。
如果这是在全球范围内完成的,那么这不会彻底改变计算机的未来。
这个系统能在现实中开发吗?
这不是很有效率吗?
它是 8 位而不是 7 位的主要原因是它需要是 2的幂。
另外:想象一下 nibbles 在 7 位字节中会是什么样子..
对于与十六进制的相互转换也是理想的(而且速度很快)。
更新:
What advantage do we get if we have power of 2... Please explain
首先,让我们区分BYTE
和ASCII character
。这是两个不同的东西。
一个字节用于以优化的方式存储和处理数字信息(数字),而 character 是(或应该是)仅用于与我们人类互动,因为我们发现很难阅读二进制文件(尽管在现代大数据,big-internetspeed 和 big-clouds,甚至服务器也开始用文本相互交谈(xml,json),但那是完全不同的故事..)。
至于 byte 是 2 的幂,简短的回答是:
具有 2 的幂的优势在于,数据可以很容易地在字节或整数边界上有效对齐 - 对于 1、2、4 和 8 位的单个字节,它会变得更好2 的更高次方。
将其与 7 位 ASCII(或 7 位 byte)进行比较:7 是质数,这意味着只能是 1 位和 7 位值以对齐的形式存储。
当然,人们可以想到的原因还有很多(例如 CPU's/MCU' 中逻辑门和多路复用器的布局和结构)。
假设您想控制多路复用器上的输入或输出引脚:使用 2 条控制线(位)您可以寻址 4 个引脚,具有 3 个输入,8 针 可以寻址,4 -> 16,.. - 地址线同上。所以越看越觉得用2的幂是最有效率的模型。
关于优化的7位ASCII:
即使在具有 8 位字节的系统上,7 位 ASCII 也可以通过一些移位轻松压缩。可以创建带有 operator[]
的 Class
,而不需要 7 位字节(当然,简单的压缩甚至会做得更好)。
A byte is not necessarily 8 bits. A byte a unit of digital information whose size is processor-dependent. Historically, the size of a byte is equal to the size of a character as specified by the character encoding supported by the processor. For example, a processor that supports Binary-Coded Decimal (BCD) characters defines a byte to be 4 bits. A processor that supports ASCII定义一个字节为7位。使用字符大小来定义字节大小的原因是为了使编程更容易,考虑到字节一直(据我所知)被用作数据存储的最小可寻址单元。仔细想想,你会发现这确实很方便。
在 IBM 的一位计算机科学家IBM S/360 computer family, which used an 8-bit character encoding called EBCDI. IBM, through its S/360 computers, introduced several crucially important computing techniques that became the foundation of all future processors including the ones we using today. In fact, the term byte has been coined by Buchholz中,一个字节被定义为 8 位。
当英特尔推出其第一个 8 位处理器 (8008) 时,即使指令集不直接支持任何字符编码,一个字节也被定义为 8 位,从而打破了这种模式。然而,该处理器提供了大量指令,用于对压缩(4 位)和未压缩(8 位)BCD 编码数字进行操作。事实上,整个x86指令集的设计都是基于8位字节方便设计的。 7 位 ASCII 字符适合 8 位字节这一事实是一个免费的额外优势。通常,字节是最小的可寻址存储单元。我想在这里提一下,在数字电路设计中,将电线或引脚的数量设置为 2 的幂是很方便的,这样作为输入或输出出现的每个可能值都有用。
后来的处理器继续使用 8 位字节,因为这样可以更容易地在旧设计的基础上开发新设计。它还有助于使新处理器与旧处理器兼容。因此,寄存器、数据总线、地址总线的大小每次都增加一倍(现在我们达到了 64 位),而不是改变一个字节的大小。这种翻倍使我们能够轻松地使用现有的数字电路设计,显着降低处理器设计成本。
我只是想知道为什么 一个字节是 8 位?
具体来说,如果我们谈论 ASCII 字符集,那么它的所有符号都可以只用 7 位表示,剩下一个备用位(实际上 8 位是 1 个字节)。
因此,如果我们假设有一家大公司,其中每个人都同意只使用 ASCII 字符集而不使用其他任何东西(而且这家公司不必与外界做任何事情)那么就不能在这个公司开发人员开发的软件将 7 位视为 1 字节,因此 节省了一位宝贵的位 ,
如果这样做,他们可以节省例如 10 位 space 每10个字节(这里1个字节又是7位)等等,最终很多很多宝贵的space。
这家公司用的硬件(硬盘,处理器,内存)具体知道它需要存储 & 并将 7 位组合在一起作为 1 个字节。
如果这是在全球范围内完成的,那么这不会彻底改变计算机的未来。
这个系统能在现实中开发吗?
这不是很有效率吗?
它是 8 位而不是 7 位的主要原因是它需要是 2的幂。
另外:想象一下 nibbles 在 7 位字节中会是什么样子..
对于与十六进制的相互转换也是理想的(而且速度很快)。
更新:
What advantage do we get if we have power of 2... Please explain
首先,让我们区分BYTE
和ASCII character
。这是两个不同的东西。
一个字节用于以优化的方式存储和处理数字信息(数字),而 character 是(或应该是)仅用于与我们人类互动,因为我们发现很难阅读二进制文件(尽管在现代大数据,big-internetspeed 和 big-clouds,甚至服务器也开始用文本相互交谈(xml,json),但那是完全不同的故事..)。
至于 byte 是 2 的幂,简短的回答是:
具有 2 的幂的优势在于,数据可以很容易地在字节或整数边界上有效对齐 - 对于 1、2、4 和 8 位的单个字节,它会变得更好2 的更高次方。
将其与 7 位 ASCII(或 7 位 byte)进行比较:7 是质数,这意味着只能是 1 位和 7 位值以对齐的形式存储。
当然,人们可以想到的原因还有很多(例如 CPU's/MCU' 中逻辑门和多路复用器的布局和结构)。
假设您想控制多路复用器上的输入或输出引脚:使用 2 条控制线(位)您可以寻址 4 个引脚,具有 3 个输入,8 针 可以寻址,4 -> 16,.. - 地址线同上。所以越看越觉得用2的幂是最有效率的模型。
关于优化的7位ASCII:
即使在具有 8 位字节的系统上,7 位 ASCII 也可以通过一些移位轻松压缩。可以创建带有 operator[]
的 Class
,而不需要 7 位字节(当然,简单的压缩甚至会做得更好)。
A byte is not necessarily 8 bits. A byte a unit of digital information whose size is processor-dependent. Historically, the size of a byte is equal to the size of a character as specified by the character encoding supported by the processor. For example, a processor that supports Binary-Coded Decimal (BCD) characters defines a byte to be 4 bits. A processor that supports ASCII定义一个字节为7位。使用字符大小来定义字节大小的原因是为了使编程更容易,考虑到字节一直(据我所知)被用作数据存储的最小可寻址单元。仔细想想,你会发现这确实很方便。
在 IBM 的一位计算机科学家IBM S/360 computer family, which used an 8-bit character encoding called EBCDI. IBM, through its S/360 computers, introduced several crucially important computing techniques that became the foundation of all future processors including the ones we using today. In fact, the term byte has been coined by Buchholz中,一个字节被定义为 8 位。
当英特尔推出其第一个 8 位处理器 (8008) 时,即使指令集不直接支持任何字符编码,一个字节也被定义为 8 位,从而打破了这种模式。然而,该处理器提供了大量指令,用于对压缩(4 位)和未压缩(8 位)BCD 编码数字进行操作。事实上,整个x86指令集的设计都是基于8位字节方便设计的。 7 位 ASCII 字符适合 8 位字节这一事实是一个免费的额外优势。通常,字节是最小的可寻址存储单元。我想在这里提一下,在数字电路设计中,将电线或引脚的数量设置为 2 的幂是很方便的,这样作为输入或输出出现的每个可能值都有用。
后来的处理器继续使用 8 位字节,因为这样可以更容易地在旧设计的基础上开发新设计。它还有助于使新处理器与旧处理器兼容。因此,寄存器、数据总线、地址总线的大小每次都增加一倍(现在我们达到了 64 位),而不是改变一个字节的大小。这种翻倍使我们能够轻松地使用现有的数字电路设计,显着降低处理器设计成本。