我只是想知道 A BYTE是8 BITS的原因?
具体来说,如果我们谈论ASCII字符集,那么它的所有符号只能表示7位,留下一个备用位(实际上8位是1字节)。
因此,如果我们假设有一个大公司,其中每个人都同意只使用ASCII字符集而不是其他任何东西(这家公司也不必对外界做任何事情)那么就不能在这里公司开发人员开发软件,将7位视为1字节,因此保存一个宝贵的位,如果这样做,他们可以为每10个字节节省10比特空间(这里1字节又是7位)因此,最终有很多宝贵的空间。
该公司使用的硬件(硬盘,处理器,内存)特别知道它需要存储和放置。并将7位串在一起作为1字节。
如果这是全局完成的话,那么这不会彻底改变计算机的未来。
这个系统能否在现实中发展?
这不是有效的吗?
答案 0 :(得分:1)
它的8位而不是7位的主要原因是 2的幂。
另外:想象一下半字节在7位字节中会是什么样的..
转换为十六进制的理想(和快速)。
<强>更新强>:
如果我们有2的力量,我们会获得什么好处...请解释
首先,让我们区分BYTE
和ASCII character
。这是两件不同的事情。
字节用于以优化方式存储和处理数字信息(数字),而字符是(或应该是)只是意味着与我们,人类互动,因为我们发现很难阅读二进制文件(尽管在现代的大数据, big-internetspeed 和 big -clouds ,甚至服务器也开始用文本(xml,json)互相交谈,但那是一个完全不同的故事..)。
对于字节为2的强弱,简答:
具有2的幂的优点是数据可以容易地在字节或整数边界上有效地对齐 - 对于单个字节,即1,2,4和8位,并且在更高的功率下它变得更好2。
将其与7位ASCII(或7位字节)进行比较:7是素数,这意味着只有1位和7位值可以以对齐的形式存储
当然,人们可以想到的原因还有很多(例如CPU和MCU中的逻辑门和多路复用器的布局和结构)。
假设您想控制多路复用器上的输入或输出引脚:使用2条控制线(位)可以寻址4个引脚,3个输入, 8个引脚可以解决,4 - &gt; 16,.. - 地址线的同义词。因此,你看它越多,使用2的幂就越有意义。它似乎是最有效的模型。
至于优化的7位ASCII :
即使在具有8位字节的系统上,也可以通过一些位移来轻松压缩7位ASCII。可以创建Class
operator[]
,而不需要7位字节(当然,简单压缩甚至可以做得更好)。
答案 1 :(得分: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位),而不是改变一个字节的大小。这种加倍使我们能够轻松使用现有的数字电路设计,大大降低了处理器设计成本。