gok*_*oon 19 memory math ram history processor
我不太了解RAM和HDD架构,或者电子如何处理内存块,但这总是引起我的好奇心:为什么我们选择停在8位以获得计算机值中的最小元素?
我的问题可能看起来很愚蠢,因为答案很明显,但我不太确定......
是因为2 ^ 3允许它在寻址内存时非常适合吗?电子产品是否专门设计用于存储8位块?如果是,为什么不使用更广泛的词?这是因为它除了32,64和128,所以处理器的单词可以给出几个单词?这么小的空间有256个值是否方便?
你怎么看 ?
我的问题有点过于形而上学,但我想确保这只是一个历史原因,而不是技术或数学原因.
对于这个轶事,我也在考虑ASCII标准,其中大多数首字母对UTF-8这样的东西都没用,我也试着想一些更简单快速的字符编码......
Jon*_*nna 12
从历史上看,字节大小并不总是8位(就此而言,计算机也不必是二进制,但非二进制计算在实践中看到的动作要少得多).正是出于这个原因,IETF和ISO标准经常会用到字节的 -他们不使用字节,因为他们不想承担这意味着8位,当它没有.
实际上,当字节被创造时,它被定义为1-6位单元.历史使用的字节大小包括7,9,36和具有可变大小字节的机器.
8是商业成功的混合物,它是为人民考虑这个问题(这将送入对方),毫无疑问,其他的原因,我完全不知道的便利足够数量.
您提到的ASCII标准假定为7位字节,并且基于早期的6位通信标准.
编辑:可能值得添加到这一点,因为有些人坚持说那些说字节总是八位字节,是字节与字混淆.
一个八位组是给予8个比特的单元(源自拉丁文八)的名称.如果您使用的是计算机(或更高的抽象级别,编程语言),其中字节是8位,那么这很容易做到,否则您需要一些转换代码(或硬件中的转换).八位字节的概念在网络标准中比在本地计算中更多,因为在体系结构中立的情况下,它允许创建可用于不同字节大小的机器之间通信的标准,因此它在IETF和ISO标准中的使用(顺便提一下,ISO/IEC 10646使用八位字节,其中Unicode标准使用字节什么是本质-对后期一些轻微的额外限制-同样的标准,但Unicode标准做详细说明它们的意义八位由字节即使字节可以在不同的机器不同的大小).的概念八位组,因为8位字节是常见的(使用它们作为这些标准的基础的,因此选择),但不普遍(因此需要另一字以避免歧义)精确地存在.
从历史上看,一个字节是用来存储字符,不管这又建立在规范,标准和事实上的标准,用于电传和其他通信方式日期前的电脑,在1870年与博多也许开始(我不大小我们之前不知道,但我愿意接受更正.
这反映在C和C++中,用于存储字节的单元被调用,char其位大小由CHAR_BIT标准的limits.h标头定义.不同的机器将使用5,6,7,8,9或更多位来定义字符.当然,这些天我们将字符定义为21位,并使用不同的编码将它们存储为8位,16位或32位单元(以及非Unicode授权方式,如UTF-7用于其他大小),但历史上是它的方式.
在旨在跨机器更加一致的语言中,而不是反映机器架构,byte往往会在语言中得到修复,而现在这通常意味着它在语言中被定义为8位.考虑到它们制作历史的重点,并且大多数机器现在都有8位字节,这种区别在很大程度上没有实际意义,尽管在不同大小的机器上为这些语言实现编译器,运行时等并非不可能.字节,只是不那么容易.
一个词是给定计算机的"自然"大小.这个定义不太明确,因为它会影响一些通常会共同关注的重叠问题,但可能不会.机器上的大多数寄存器都是这么大,但有些可能没有.最大的地址大小通常是一个字,尽管可能不是这种情况(Z80有一个8位字节和一个1字节字,但允许一些加倍的寄存器以提供一些16位支持,包括16位寻址).
我们再次在这里看到C和C++之间的区别,其中int是根据字大小long来定义的,并且被定义为利用具有"长字"概念的处理器应该存在,尽管在给定的情况下可能是相同的int.最小值和最大值再次位于limits.h标头中.(事实上,随着时间的推移,int可能被定义为小于自然字大小,作为与其他地方常见的一致性的组合,减少一组内存的内存使用,以及可能的其他问题我不了解).
Java和.NET语言采用在所有架构中定义int和long修复的方法,并且处理差异是运行时(特别是JITter)要处理的问题.值得注意的是,即使在.NET中,指针的大小(在不安全的代码中)也会根据架构而变化,而不是语言强加的字大小.
因此,八位字节,字节和字都是彼此非常独立的,尽管八位字节==字节和字是整数字节(以及像2,4,8等整个二进制数字)的关系是常见的今天.
并非所有字节都是8位.有些是7,有些是9,还有一些其他值.原因8很重要,在大多数现代计算机中,它是一个字节中的标准位数.正如Nikola所提到的,有点是实际的最小单位(单个二进制值,真或假).
正如Will所提到的,本文http://en.wikipedia.org/wiki/Byte更详细地描述了字节及其可变大小的历史.
为什么8,256和其他数字很重要的一般原因是它们是2的幂,并且计算机使用基2(二进制)系统的交换机运行.
ASCII编码需要7位,EBCDIC需要8位.扩展的ASCII代码(例如ANSI字符集)使用第8位来扩展具有图形,重音字符和其他符号的字符集.一些体系结构使用专有编码; 一个很好的例子是DEC PDP-10,它有一个36位的机器字.此体系结构上的某些操作系统使用打包编码,这些编码在机器字中存储了6个字符,用于各种目的,例如文件名.
到20世纪70年代,DG Nova和DEC PDP-11(16位架构和具有32位机器字的IBM大型机)的成功推动了业界默认的8位字符.20世纪70年代后期的8位微处理器是在这种环境下开发的,这成为事实上的标准,特别是现有的外围设备如UART,ROM芯片和FDC芯片被构建为8位设备.
到了20世纪70年代后期,业界确定8位作为事实上的标准,PDP-8及其12位机器字等架构变得有些边缘化(尽管PDP-8 ISA和衍生产品仍然出现在嵌入式系统产品中) ).随后是16位和32位微处理器设计,如Intel 80x86和MC68K系列.