位元组

位元组
单位系统 来自的单元
单位 数字信息,数据大小
象征 b, o (8位时)

字节是一个数字信息的单位,最常见的是八位。从历史上看,字节是用于编码计算机中文本单个字符的位数,因此,它是许多计算机体系结构中最小的可寻址单元。为了使任意尺寸的字节从普通的8位定义中删除,网络协议文档(例如Internet协议)RFC 791 )将8位字节称为八位字节。八位位置中的那些位通常根据位末端的数量计数为0到7或7至0。

从历史上看,字节的大小是与硬件有关的,并且没有规定规模的确定标准。尺寸从1到48位。六位字符代码是早期编码系统中经常使用的实现,而使用六位数和九位字节的计算机在1960年代很常见。这些系统通常具有12、18、24、30、36、48或60位的记忆词,对应于2、3、4、5、6、8或10个六位字节。在这个时代,在字节变得普遍之前,教学流中的位分组通常被称为音节平板

ISO/IEC 2382-1:1993中记录的八位的现代标准是两个方便的功率,具有两个允许二进制编码值0至255的一个字节,AS 2到8的功率为256。国际标准IEC 80000-13编纂了这一共同含义。许多类型的应用程序使用可在八个或更少的位中表示的信息,而处理器设计人员通常会针对此用法进行优化。主要的商业计算体系结构的普及在了8位字节的普遍存在。现代体系结构通常使用32或64位单词,分别由四个或八个字节构建。

字节的单位符号被国际电气技术委员会(IEC)和电气和电子工程师研究所(IEEE)指定为上案例字母B。在国际上,单位八位符号O明确定义了八个位的序列,从而消除了术语“字节”的潜在歧义。

词源和历史

该术语字节是由Werner Buchholz于1956年6月在IBM Stretch计算机的早期设计阶段创造的,该计算机的设计阶段与指令中编码的字节大小有关,该计算机的位置和可变字段长度(VFL )指令。避免意外突变被咬伤是故意咬合的呼吸

比特小组比计算机的单词大小,特别是四个位的组的另一个起源是路易斯·杜利(Louis G. Dooley)的记录,他们声称他在与Jules Schwartz和Dick Beeler合作时创造了这个词1956年或1957年,在MIT林肯实验室被称为Sage ,该实验室由Rand ,MIT和IBM共同开发。后来,Schwartz的语言Jovial实际上使用了该术语,但作者模糊地回忆起它来自AN/FSQ-31

早期计算机使用了各种四位二进制编码的十进制(BCD)表示,以及在美国陆军FIELDATA )和海军中常见的可打印图形图案的六位数代码。这些表示包括字母数字字符和特殊的图形符号。这些集合在1963年扩展到七个编码,称为《美国信息互换标准守则》 (ASCII)作为联邦信息处理标准,该标准取代了1960年代美国政府和大学不同分支机构使用的不兼容的电视码。 ASCII包括上下小写字母的区别以及一组控制字符,以促进书面语言的传输以及打印设备功能,例如页面提示和线条供稿,以及对传输上数据流的物理或逻辑控制媒体。在1960年代初期,IBM同时在ASCII标准化方面进行了活跃,但在其System/360的产品线中同时引入了八位扩展的二进制二进制编码十进制互换代码(EBCDIC),扩展了其六位数二进制二进制十进制的小数(BCDIC) )在较早的卡中使用的表示形式。系统/360的突出性导致了八位存储大小的普遍采用,而详细的EBCDIC和ASCII编码方案则不同。

在1960年代初期, AT&T在长途行李箱线上引入了数字电话。这些使用了八位μ-law编码。这项大型投资承诺将降低八位数据的传输成本。

计算机编程艺术的第1卷中(1968年首次出版),唐纳德·诺斯(Donald Knuth)在其假设的混音计算机中使用字节来表示一个单元,该单元“包含一个未指定的信息… …能够保持至少64个不同的值。 。最多100个不同的值。因此,在二进制计算机上,A字节必须由六个位组成”。他指出:“自1975年左右以来,字节开始意味着一系列精确的八个二进制数字……当我们谈到与Mix有关字节尚未标准化的日子。”

1970年代八位微处理器的开发推广了此存储尺寸。在早期个人计算机中使用的80808086的直接前身Intel 8008等微处理器也可以在一个字节中的四位分对上执行少量操作,例如十进制的ADD-ADD-ADJUST( DAA)指示。一个四位数的数量通常称为nibble ,也称为nybble ,它以单个十六进制数字为方便地表示。

该术语八位用于明确指定八位的大小。它在协议定义中广泛使用。

从历史上看,至少在西欧,八核八分之一被用来表示八位。但是,这种用法不再常见。该术语的确切起源尚不清楚,但可以在1960年代和1970年代的英国,荷兰和德国来源以及飞利浦大型机组计算机的整个文件中找到。

单位符号

字节的单位符号在IEC 80000-13IEEE 1541和公制互换格式中指定为上案例B。

国际数量体系(ISQ)中,B也是Bel的象征, Bel是以亚历山大·格雷厄姆·贝尔(Alexander Graham Bell)命名的对数功率比率的单位,与IEC规范造成了冲突。但是,几乎没有混乱的危险,因为BEL是一个很少使用的单位。它主要用于其decadic部分,分贝(dB),用于信号强度声音压力水平测量,而一个字节,当表示和其他分数的单位仅用于派生单元,例如作为传输速率。

八八元的小写字母o被定义为IEC 80000-13中八位位的符号,通常以法语罗马尼亚语等语言使用,并且还与倍数的公制前缀相结合,例如KO和MO。

多字节单元

多字节单元
十进制
价值 公制
1000 KB 千字节
10002 MB Megabyte
10003 GB 千兆字节
10004 TB trabyte
10005 pb PETABYTE
10006 EB exabyte
10007 ZB Zettabyte
10008 YB Yottabyte
10009 RB ronnabyte
100010 QB Quettabyte
二进制
价值 IEC 记忆
1024 KIB 基比贝特 KB 千字节
10242 MIB Mebibyte MB Megabyte
10243 吉布 吉比比特 GB 千兆字节
10244 tib Tebibyte TB trabyte
10245 PIB 卵石
10246 EIB Exbibyte
10247 zib Zebibyte
10248 yib Yobibyte
数据数量级

存在多个系统以根据字节定义单位倍数。某些系统基于10的权力,遵循国际单位系统(SI),例如,将前缀射为1000(10 3 );其他系统基于2的功率。这些系统的命名法很困惑。基于10个功率的系统使用标准Si前缀KILOMEGAGIGA ,...)及其相应的符号(K,M,G,...)。但是,基于2个功率的系统可能会使用二进制前缀( KibiMebiGibi ,...)及其相应的符号(Ki,Mi,Gi,...),或者它们可能使用前缀K,M和G,当使用前缀M或G时产生歧义。

尽管对于千字节的小数和二进制解释之间的差异相对较小(比基比贝特小约2%),但随着单位增长的增长,系统越来越偏离(每三个数量级的相对偏差增长2.4%)。例如,10基于10的Terabyte比2基于2的Tebibyte小约9%。

基于10的能力的单位

使用10的功率定义前缀的定义 - 在哪个kbyte (符号kb)中定义为等于1,000字节 - 由国际电气技术委员会(IEC)推荐。 IEC标准定义了八个这样的倍数,最多1 Yottabyte(Yb)等于1000 8字节。 2022年,国际权重和措施局(BIPM)采用了额外的前缀ronna- for 1000 9和1000 10Quetta-

该定义最常用于计算机网络,内部总线,硬盘驱动器和闪存媒体传输速度的数据速率单元,以及大多数存储媒体的容量,尤其是硬盘驱动器,基于闪存的存储和DVD 。使用此定义的操作系统包括MACOSiOSUbuntuDebian 。它也与SI前缀在计算中的其他用途(例如CPU时钟速度性能度量)一致。

基于2的权力的单位

一个基于2个单位的系统系统,其中1个基比比(KIB)等于1,024(即2 10 )字节由国际标准IEC 80000-13定义,并得到国家和国际标准机构( BIPM,IEC ,IEC,IEC ,IEC,IEC,IEC, IEC ,IEC)的支持。 nist )。 IEC标准定义了八个这样的倍数,最多1 Yobibyte(Yib)等于1024 8字节。国际权和措施委员会单位咨询委员会(RI,1024 9 )和Quebi- (Qi,1024 10 )在国际权重和措施咨询委员会(CCU)咨询委员会的咨询文件中发表了自然二进制二元对应物。 ,但尚未被IEC和ISO采用。

相同单元的替代命名系统(此处称为习惯惯例),其中1千键(kb)等于1,024字节,1兆字节(MB)等于1024 2个字节和1千兆字节(GB) 1990年代的JEDEC标准提到了等于1024 3字节。 JEDEC标准仅提到了前三个倍数(最多GB),这没有提及结核病和更大的倍数。 Microsoft Windows操作系统和随机记忆容量(例如主内存和CPU缓存大小)以及电信公司(例如VodafoneAT&TOrangeTelstra)使用了习惯惯例。

对于存储容量,MACOS和iOS通过Mac OS X 10.6 Snow Leopard和iOS 10使用了习惯惯例,然后根据10的功率切换为单位。

狭o的单位

各种计算机供应商都为各种尺寸的数据创造了术语,有时甚至在单个供应商中也有相同术语的不同大小。这些术语包括双词半词长词四词平板超级字音节。也有非正式的条款。例如,一半字节nybble,用于4位,八分位k为1000 8

冲突定义的历史

单位前缀的小数和二进制解释之间的百分比差异随着存储尺寸的增加而增长

当代计算机内存具有二进制体系结构,可以根据2个最实用的功率来定义内存单元。为方便起见,用于二进制倍数的公制前缀千乘以二进制倍数,因为1,024个约为1,000。这个定义在个人计算初期很流行,诸如Tandon 5之类的产品在1,024字节大会之后, 1⁄4英寸DD软盘格式(持有368,640字节)被宣传为“ 360 kb”。但是,这不是普遍的。 Shugart SA -400 5 1⁄4英寸的软盘未形成109,375字节,并使用1000次会议被广告为“ 110 KByte”。同样,8英寸DEC RX01 Floppy(1975)持有256,256字节的格式,并被广告为“ 256K”。其他磁盘是使用两个定义的混合物进行广告宣传的:值得注意的是, 3 + 1⁄2英寸的HD磁盘实际上为“ 1.44 MB”,实际上具有1,440 KIB的容量,相当于1.47 MB或1.41 MIB。

1995年,国际纯和应用化学联盟(IUPAC)命名法和符号互联委员会试图通过提出一组1024权力的二进制前缀来解决这种歧义,包括Kibi(Kilobinary),Mebobinary),MEBI(MEGBIARICY)(MEGBAIRIANIY) (MEGBAIRIANY)和gibi(千兆内)。

1998年12月, IEC通过采用IUPAC提议的前缀(Kibi,Mebi,Gibi等)来解决这种多种用法和定义,以明确表示1024的权力。一个Mebibyte(1 MIB)是1024 2字节= 1,048,576个字节,依此类推。

1999年,唐纳德·诺斯(Donald Knuth)建议将基比比比(Kibibyte)称为“大千叶型”( KKB )。

现代标准定义

IEC采用了IUPAC提案,并于1999年1月发布了标准。IEC前缀是国际数量体系的一部分。 IEC进一步指出,千字节应仅用于指1,000个字节。

关于定义的诉讼

涉嫌消费者对字节倍数的二进制和十进制定义引起的诉讼通常已经对制造商有利于制造商,法院认为,千兆字节或GB的法律定义为1 GB = 1,000,000,000,000(10 9 )字节(该小数(10 9)字节(该字节定义),而不是二进制定义(2 30 ,即1,073,741,824)。具体而言,美国加利福尼亚北部地区的美国地方法院裁定:“美国国会认为千兆字节的十进制定义是“美国贸易和商业”的目的“首选”一个[...]立法机关同样采用了所有“该州的交易”的小数系统。

较早的诉讼已在解决方案中结束,没有法院对这个问题的裁决,例如针对Drive Wardustrer Western Digital的诉讼。 Western Digital解决了这一挑战,并增加了可用容量可能与广告能力不同的产品的明确免责声明。西门(Seagate)也以类似的理由被起诉,也定居下来。

实际例子

单元 近似等效
位元 布尔变量表示为true(1)或false(0)。
位元组 一个基本的拉丁字符。
千字节 jabberwocky ”的文字
典型的粉丝
Megabyte 哈利·波特和火杯的文字
千兆字节 大约半小时的视频
CD-羔羊的质量未压缩音频位于百老汇
trabyte 2007年最大的消费者硬盘驱动器
1080p 4:3阿凡达的视频:最后一个气培动画电视连续剧,所有61集
PETABYTE 2000年的MP3编码音乐
exabyte 2004年全球每月互联网流量
Zettabyte 2016年全球年度互联网流量

常用用途

许多编程语言定义数据类型字节

CC ++编程语言将字节定义为“可寻址的数据存储单元,足以容纳执行环境的基本字符集的任何成员”(C标准的第3.6条)。 C标准要求积分数据类型Unsigned Char必须至少保持256个不同的值,并且至少由八个位表示(第5.2.4.2.1节)。 C和C ++储备的各种实现8、9、16、32或36位用于存储字节。另外,C和C ++标准要求两个字节之间没有差距。这意味着内存中的每一点都是字节的一部分。

Java的原始数据类型字节定义为八位。它是一种签名的数据类型,可保持-128至127的值。

.NET编程语言(例如C# )将字节定义为无符号类型,将SBYTE定义为签名的数据类型,分别保持0至255的值和-128至127

在数据传输系统中,字节用作串行数据流中位的连续序列,代表最小的杰出数据单元。对于异步通信,完整的传输单元通常还包括一个起始位,1或2个停止位,甚至可能是奇偶校验位,因此其大小可能从七到十二位,对于五到八个位的实际数据。对于同步通信,错误检查通常在末端使用字节。

也可以看看