计算机科学为什么重要,数学 – 为什么在计算机科学中有8和256个如此重要的数字?...

从历史上看,字节的大小并不总是8位(对于这一点,计算机也不一定是二进制的,但是非二进制计算在实践中看起来更少)。正是由于这个原因,IETF和ISO标准通常使用术语“八位位组” – 它们不使用字节,因为它们不想假定它不是8位。

实际上,当字节被创建时,它被定义为1-6位单位。整个历史使用的字节大小包括7,9,36和可变大小字节的机器。

8是一个商业上的成功,它是一个方便的数字为人们思考(这将互相馈赠),毫无疑问,其他原因我完全无知。

您提到的ASCII标准假定为7位字节,并且基于早期的6位通信标准。

编辑:这可能值得添加,因为有些人坚持说那些字节总是八位字节,是混乱的字节与单词。

八位字节是一个8位单位的名称(来自拉丁语八位)。如果您正在使用的字节为8位的计算机(或更高的抽象级别),那么这很容易,否则需要一些转换代码(或硬件转换)。八位字节的概念在网络标准方面比在本地计算中更加出色,因为在架构中立的情况下,它允许创建可用于在具有不同字节大小的机器之间通信的标准,因此它在IETF和ISO标准(顺便说一下,ISO / IEC 10646使用八位字节,其中Unicode标准使用字节本质上是对后一部分 – 具有相同标准的一些次要额外限制,尽管Unicode标准确实表明它们是指字节逐字节,即使字节可能是不同尺寸的不同机器)。八位位组的概念正是因为8位字节是常见的(因此选择使用它们作为这种标准的基础),但不是通用的(因此需要另一个字来避免歧义)。

历史上,一个字节是用于存储字符的大小,这又是建立在实践,标准和事实上的标准之上,这些标准和事实上的标准预先用于电传和其他通信方法的计算机,可能在1870年开始使用Baudot(I don不知道更早,但是可以修正)。

这反映在事实上,在C和C中,用于存储一个字节的单元称为char,其大小以位为单位,由标准limit.h标题中的CHAR_BIT定义。不同的机器将使用5,6,7,8,9或更多位来定义一个字符。这些天当然我们将字符定义为21位,并使用不同的编码将它们存储在8位,16位或32位单元中(和非Unicode授权方式,如UTF-7,用于其他大小),但从历史上看方式是。

在旨在在机器之间更一致的语言中,而不是反映机器架构,字节往往以语言固定,而这些日子通常意味着它被定义为8位的语言。考虑到制造过程中的历史,而且大多数机器现在具有8位字节,所以区别在很大程度上是不成立的,尽管在不同尺寸的机器上实现这种语言的编译器,运行时间等并不是不可能的字节,只是不那么容易。

一个字是给定计算机的“自然”大小。这一点不太明确,因为它会影响一般重叠的重要问题,但可能不会。机器上的大多数寄存器将是这个大小,但有些可能不是。最大的地址大小通常是一个字,尽管可能不是这样(Z80有一个8位字节和一个1字节的字,但允许寄存器的一些倍数给出一些16位支持,包括16位寻址)。

再次,我们在这里看到C和C之间的区别,其中int是根据字大小定义的,并且长定义为利用具有“长字”概念的处理器应该存在,尽管在给定的情况下可能是相同的到int最小值和最大值再次在limits.h标头中。 (事实上​​,随着时间的推移,int可能被定义为小于自然字大小,与其他地方常见的一致性的一致性,一些int数组的内存使用减少,以及可能的其他问题我不知道)。

Java和.NET语言采用将所有architecutres定义为int和long的方法,并将处理差异作为运行时(特别是JITter)处理的问题。值得注意的是,即使在.NET中,指针(不安全代码)的大小将根据体系结构而变化,而不是语言强加的字大小。

因此,八位字节,字节和字都是非常独立的,尽管八位字节==字节和字是整数字节(并且像2,4,8等的整数二进制数)是常见的今天。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值