我不知道非常好,约RAM和硬盘的建筑,或如何电子交易有大块的存储器,但这总是触发我的好奇心:为什么我们选择停留在8位最小的元素中的一个计算机价值?

我的问题可能看起来很愚蠢的,因为答案是显而易见的,但是我不是很确定...

这是因为2^3允许它完全适合当解决的记忆?是电子产品尤其是专用于储存大块的8位?如果是的话,为什么不使用更广泛的说?这是因为它把32、64和128,以便处理器的话可以给予若干的那些话吗?它只是方便有256值对于这样一个小小的空间?

你怎么想?

我的问题是有点太形而上学的,但我想确保它只是一个历史原因,并不是一个技术和数学的原因。

为轶事,我也想ASCII标准,其中大部分的第一个字都没用用的东西喜欢UTF-8,我也想尝试一些更小的和更快的字符编码...

有帮助吗?

解决方案

从历史上看,字节并不总是8位(对于这个问题,计算机不需要是二进制的任,但非二进制的计算已经看到多少行动在实践).它是由于这个原因,IETF和ISO标准经常使用的术语 八位 -他们不用 字节 因为他们不想假设这意味着8位时,它没有。

事实上,当 字节 被创造出来它被定义为一个1到6点的单元。字节尺寸中的使用在整个历史中包括7,9,36和机的变型字节。

8物的混合物,商业上的成功,它是一个方便的足够数量的人们思考(这将有料到每个其他)并且无疑其他原因,我完全无知。

ASCII标准您说是假设一个7位字节,并根据先前6位的通信标准。


编辑:它的价值可能加入到这一点,因为一些坚持认为这些说字节总是八,是令人困惑字节的话。

一个 八位 是一个名字给一个单元的8位(从拉丁美洲的八个)。如果您使用的是计算机(或在更高的抽象的级别、编程语言)字节,其中8位,然后这是很容易做到,否则你需要一些代码转换(或转换在硬件)。这一概念的 八位 来了更多在网络标准,比当地计算,因为在正在建筑中立的,它允许创建的标准,可以使用通信的机器之间有不同的字节的大小,因此其使用在IETF和ISO标准(顺便说一下,ISO/IEC10646使用 八位 在标准使用Unicode 字节 为什么是基本上与一些微小的额外的限制,后者部分相同的标准,虽然Unicode标准不会详细说明他们的意思是 八位 通过 字节 虽然字节可以是不同的尺寸上不同机器的).这一概念的 八位 存在,正是因为8位字节是常见的(因此选择使用他们作为依据的这种标准),但不具有普遍性(因此需要另一个词,以避免含糊不清).

从历史上看,一个字节是用来储存的性格,这反过来建立的做法、标准和事实上的标准预期的计算机用户电报和其他通信方法,开始或许可以博多在1870(我不知道的任何早期,但我打开更正).

这反映的事实,在C和C++的单元,用于存储字节被称为 char 其大小在位的定义是 CHAR_BIT 在标准的限制。h头。不同机会使用5、6、7、8、9或更多位来定义的字符。这些天当然我们定义的字为21位和使用不同的编码来储存他们中的8,16-还是32位的单位,(并非Unicode授权的方式喜欢UTF-7的其他大小),但从历史上看,那是它的方式。

在语言,其目的是以更为一致的跨机,而不是反映该机构, byte 往往是固定的语言,而这些日子,这通常意味着定义中的语言为8位。给点在历史上,当他们作出,而大部分机器现在已经有8位字节的区别很大程度上没有实际意义,虽然它不是不可能实现一个编译器,运行时间,等等。对于这些语言的机器上有不同大小的字节,只是不容易的。

一个词是"自然的"大小对于给定的计算机。这是较不明确的定义,因为它影响到几个重叠的问题,将一般coïncide,但可能不会。最寄存在一个机会这样大小,但一些可能不会。最大的地址尺寸通常的一个词,虽然这可能不是这种情况(第Z80有8位字节和一个1-字字,但允许一些增加一倍的注册给予一定的16位的支持,包括16位的解决).

我们再次看到这里之间的差C和C++在哪里 int 定义条款的字的大小和 long 被定义为利用处理器,其中有一个"长字"的概念应该这样存在,虽然可能在相同,在特定情况下来 int.最大值和最小值是再次在限制。h头。(事实上,随着时间已经过去了, int 可以界定为小于自然词大,因为组合的一致性有什么是共同的其他地方,减少在存储器的使用为一系列整数,以及可能的其他问题我不知道)。

Java和。网络语言采取的办法的定义 intlong 作为固定在所有architecutres,并作出处理上的差异问题,为运行时(特别抖动)来处理。值得注意的是,虽然,甚至在。网大小的指针(在不安全代码)将根据架构的基础字的大小,而不是一种语言规定的字的大小。

因此,八位字节和字都非常相互独立的,尽管关系的八==字节和字是一个整体数字节(和整个二轮数喜欢的2、4、8等)。 正在共同的今天。

其他提示

不是所有的字节是8个比特。有些是7,约9,完全一些其它值。原因8重要的是,在大多数现代计算机,它是位在一个字节的标准号。正如尼古拉提到的,位实际的最小单位(一个二进制值,真或假)。

如威尔提到的,本文 http://en.wikipedia.org/wiki/Byte描述了一些更详细的字节和其大小可变的历史。

后面为什么8,256,和其他数字是重要的一般推理是,它们是2的幂,和计算机使用开关的基极 - 2(二进制)系统中运行。

ASCII编码所需的7位,和EBCDIC需要8位。扩展的ASCII码(如ANSI字符集)中使用的第8位扩大的字符集与图形,重音符号和其他symbols.Some架构利用专有编码的;的一个很好的例子是DEC PDP-10,它有一个36位机器字。在此架构一些操作sytems用过打包编码,存储在用于各种目的的机器字6个字符,例如文件名。

到了1970年代,D.G。的成功新星和DEC PDP-11,其为16位体系结构和IBM大型机与32个机器字被推动朝行业默认一个8位的字符。 20世纪70年代末的8位微处理器在这种环境下被开发,这成为一个事实上的标准,特别是现成的外围船舶如个UART,ROM芯片和芯片FDC正在建造的8个器件。

到了70年代业界对8位作为事实上的标准和体系结构,如PDP-8与它的12比特机器字定居的后半部分变得有些边缘化(尽管PDP-8 ISA和衍生物仍显示在嵌入式系统正产品)。 16和32位微处理器设计如Intel 80×86和MC68K家庭紧随其后。

由于计算机使用二进制数的工作,两个一切权力都是非常重要的。

8位数字是能够代表256(2 ^ 8)个不同的值,足够英语的所有字符和相当多的额外的。这使得数字8和256非常重要的。结果 很多的CPU(用于现在仍然如此)过程数据8位的事实帮助了很多。

您可能听说过的另外两个重要的力量大约是1024(2 ^ 10 = 1K)和65536(2 ^ 16 = 65000)。

计算机是在数字电子的构建,和数字电子可与状态。一个片段可以具有2个状态,1或0(如果该电压高于某个电平,那么它是1,如果没有,那么它是零)。为了表示这种行为双星系统中引入(以及没有出台,但被广泛接受的)。

于是我们来到位。位是二进制系统中最小的片段。它可以采取只有2个状态,1或0,它代表了整个系统的原子片段。

要使我们的生活容易引入的字节(8位)。为了给ü一些比喻,我们不表达以克计,但就是重量的基础措施,但我们用公斤,因为它更容易使用和理解使用。一公斤是1000克,并可以在3左右的力量,当我们回到双星系统,我们使用相同的动力,我们得到8(2对3的动力8)可以表示为10。这做是因为只使用比特每天计算过于复杂。

这保持,所以进一步在未来当我们意识到,8个字节再次太小,变得复杂使用我们在功率增加1(2上的4的功率为16),然后再次2 ^图5是32,等和256仅仅是2的8次方。

所以,你的答案是我们遵循的二进制因为计算机的体系结构,我们在代表得到一些价值观,我们每天都可以简单地处理的权力的价值上去,那就是如何你有从比特到一个字节(8位)等<!/强>

(2,4,的 8 下,16,32,64,128,的 256 下,512,1024,等)(的 2 ^ x的下,X = 1,2,3,4,5,6,7,8,9,10等)

重要的数量在这里是二进制的 01.你的所有其他问题都是相关的。

克洛德*香农乔治*布尔 没有基本工作,在什么我们现在呼叫信息理论和布尔的算术。总之,这是根据一个数字开关,只能表示 0 OFF1 ON 可以表示更多的复杂信息,例如,数字、逻辑和jpg的照片。二进制的基础是计算机,因为我们知道他们目前,但其他基数的计算机或计算机模拟是完全可能的。

在人的十进制算法,权力的十个有重要的意义。10,100,1000,10 000名各似乎重要的和有用的。一旦你有一个基于计算机的二进制、有权力的2,同样,这一成为重要的。2^8=256是足够的字母的标点符号和控制的人物。(更重要的是,2^7足对于一个字母表的、标点和控制符和2^8足够的空间,对于那些ASCII字符和一个 检查点.)

我们通常数在基10时,一个单位可以有一个十个不同的价值观。计算机技术的基础上交换机(微小),它可能或关闭。如果这些代表了数字,该数字可以是1或0。这是基2.

它从那里,计算机与工作的数字都建立了作为一系列的2值数字。

  • 1数字,2值
  • 2个数字,4个值
  • 3数字,8个值等。

当处理而设计的,他们必须选择一个尺寸,处理器将优化工作。CPU,这被认为是一个"字"。早期的Cpu是根据字尺寸的fourbits不久之后,8位(1byte).今天,Cpu是主要设计工作上的32位和64位的话。但是真的,这两个国家的"开关"是为什么所有的计算机数字往往是权力2。

我认为,主要的原因与原始设计的IBM电脑。英特尔8080CPU是 第一个前体的8086 这就是后来被 用在IBM电脑.它有8位寄存器。因此,整个生态系统的应用程序开发周围的8位的比喻。为了保留向后兼容的英特尔的设计的所有后续的体系结构中保留8位寄存器。因此,8086和所有x86Cpu后,保持自己的8位登记册向后兼容性,即使他们增加了新的16位和32位寄存器。

其他原因,我能够想到的是8位是完美的配合一个基本的拉丁字符集。你不适合成4位,但可以在8.因此,你会得到整个256-值ASCII charset。它也是最小的电力为2为其有足够的位,可以适应一个字符集。当然,这些天数字符集实际上是16位宽(即Unicode).

查尔斯Petzold的写了一个有趣的书叫代码的那正好覆盖了这个问题。见第15章,字节和十六进制。

从该章行情:

  

八个比特值被输入到所述   加法器,锁存器和数据选择器,   并且还从这些单元输出。   八位值也被定义   开关和由灯泡显示   在这些电路中的数据路径是   因此说是 8个比特宽。但   为什么8位?何不6或7或9或   10?

     

...实在没有理由   它必须建立这种方式。八   只是在当时看来位是   方便的量,一个漂亮的biteful   位,如果你愿意。

     

...有一段时间,一个字节简单地指   位在特定数量   数据路径。但是到了60年代中期。在   用发展连接   IBM的System / 360(其大型复杂   商用电脑),这个词来   为是指一组8位组成。

     

...的一个原因IBM朝向所吸引   8位字节是在存储装置中的容易性   号在被称为BCD的格式。   但是,我们将在未来的章节中看到,相当巧合中的字节   理想的用于存储文本,因为大多数   世界各地的语言文字   (用象形文字除外   在中国,日本和韩国使用)   可以用少于256来表示   字符。

历史原因的,我想。8是2,2^2 4和2^4=16太小对于大多数目,而16(一两个)位的硬件来更晚。

但主要原因,我怀疑,事实上,他们已经8点微处理器,然后在16位微处理器,他的话可以表示为2八,等等。你知道的,令人讨厌历史和后向兼容性等。

另一个同样务实的理由反对"缩减":如果我们想说,使用4位作为一个字,我们会基本上只得到一半的troughtput相比,有8位。除了溢 很多 速度更快。

你总是可以挤例如2数范围在0..15在一个八位...你只需要提取他们的手。但是,除非你有一样,gazillions的数据集保持在存储器的一侧边,这不是值得努力。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top