bit 与 Byte

概述

参考:

bit(比特)

bit 也就是我们不一定听说过的比特,大名鼎鼎的比特币就是以此命名的。它的简写为小写字母 “b” 。

作为信息技术的最基本存储单元,因为比特实在太小了,所以大家生活中并不是经常听到。那么 bit 是什么呢?

电脑是以二进制存储以及发送接收数据的。二进制的一位,就叫做 1 bit。也就是说 bit 的含义就是二进制数中的一个数位,即 “0” 或者 “1”。

Byte(字节)

Byte 是字节的英文写法。它的简写为大写字母 B

既然名字叫字节,那肯定跟字符有关系。是的。英文字符通常是一个字节,也就是 1B,中文字符通常是两个字节,也就是 2B。

字节 Byte 和比特 bit 的换算关系是 1 Byte = 8 bit 。

KiB (千字节)

需要了解的是,1 KiB 并不是一千字节,因为计算机只认识二进制,所以在这里的 KiB,是 2 的 10 次方,也就是 1024 个字节。

另外很多表示存储单位的地方都把 B 写成 b,造成了大家认知的混乱。其实在存储单位计量中出现 b 的地方,它的意思仍然是 B,不要因为 bit 的缩写是 b 就被误导了,在存储计量中是不会用 比特,千比特 这种单位的。但是在网速计量中,b 的真实意思就是指 比特 了,这个我们下面再说。

单位换算

存储单位换算关系如下

  • 1 Byte = 8 bit
  • 1 KiB= 1024 Bi
  • 1 MiB = 1024 KiB
  • 1 GiB = 1024 MiB
  • 1 TiB = 1024 GiB

bit 和 Byte

计算机内部的存储和运算都是通过 「 0,1 」 这两个数在二进制下完成的。

其中每个 0 或 1 就是一个 bit(位或比特),bit 是信息的最小数据单位,并且 8 个 bit 刚好可以构成 1 个 Byte(字节)

Byte 可以说是计算机中存储容量的基本单位。我们在属性里查看电脑的任何一个文件,占用空间的大小都是用多少字节来统计的。

但就像长度、重量和体积等其他单位一样,光是用一个 Byte 来衡量数据的大小肯定是不够的。

因此在 bit 的单位后面还设有 Byte、KiB、MiB、GiB、TiB、PiB 等多个数据存储单位,各个单位之间遵循着一定的换算方式。

如果世超没记错的话,自己当时在计算机课上学到的单位转换方式是这样的:

1024( 2 ^10 ) Byte = 1 KiB

1024( 2 ^10 ) KiB = 1 MiB

1024( 2 ^10 ) MiB = 1 GiB

上面这种就是用计算机二进制的 10 次方,也就是以 1024 为进制的换算方式。

差友们可能会觉得这个换算方式很对没错呀,挺贴合计算机的二进制系统的特点,另外,考试的时候不也是要求这么算的吗?

但如果脱离计算机范畴,将它和生活中其他几个单位一比较,很多对电脑不了解的人来说,就很难理解 1024 这个换算数值是怎么来的了。

毕竟像其他诸如 1A=1000mA、1kg=100g、1m=100cm 等生活中比较常见的单位,差不多都是拿十进制的几次方来作为换算方式。

十进制的换算不仅更常见,直接拿整数一乘或者一除换算起来也会比 1024 方便很多,而且还更符合我们日常的生活习惯。

所以,才有了下文的 KB 与 KiB 的区别

KB 与 KiB 的区别

参考:

International System of Units(国际单位制,简称 SI) 这种规范就是为了照顾到计算机外的行业,除了之前提到以 1024 的换算,还可以使用十进制来进行换算。这种制度其实很早很早就有了,比如距离单位(100cm=1m)、重量单位(1kg=1000g)、时间单位(1s=1000ms) 等等。

International Electrotechnical Commission(国际电工委员会,简称 IEC) 的规范中提到,用于二进制存储单位的标准命名建议在中间"加个 i"(其实是更改了命名)以示区分

具体效果就如下:

十进制前缀二进制前缀
(SI)(IEC 60027-2)
名字缩写次方名字缩写次方
KiloByteKB$10^3$KibiByteKiB$2^{10}$
MegaByteMB$10^6$MebiByteMiB$2^{20}$
GigaByteGB$10^9$GibiByteGiB$2^{30}$
TeraByteTB$10^{12}$TebiByteTiB$2^{40}$
PetabytePB$10^{15}$PebiBytePiB$2^{50}$
ExabyteEB$10^{18}$ExbiByteEiB$2^{60}$
ZettaByteZB$10^{21}$ZebiByteZiB$2^{70}$
YottaByteYB$10^{24}$YobiByteYiB$2^{80}$

表里没有 Byte 与 bit,是因为这两种在名字写法上是一模一样的~

1998 年 12 月,IEC 通过创建前缀(例如 Kibi、Mebi、Gibi 等) 来明确表明 1024 的力量。因此 KibiByte 象征着 KiB(表示为:2^10 bytes = 1024 bytes)。这些前缀现在是International System of Quantities(国际数量体系,简称 ISQ) 的一部分。IEC 进一步规定,KiloByte 只能用于表示 1000 个 bytes

1 个字符=1 个 Byte,1 个汉字=2 个 Byte

ASCII 码:1 个英文字母(不分大小写)占一个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为 8 位二进制数,换算为十进制。最小值-128,最大值 127。如一个 ASCII 码就是一个字节。

UTF-8 编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占三个字节,英文标点占一个字节。

Unicode 编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。中文标点占两个字节,英文标点占两个字节。

但在很长的一段时间里,不同领域仍然存在着两种换算方式混用的现象。这就导致存在了很多的误会产生

硬盘容量的误区

最典型的一个例子就是硬盘厂商:它们标容量时遵照的就是 1000 进位而不是 1024 进位

同样是 500GB 的硬盘,如果按照 1024 换算,需要 5001024MB 的空间,但以 1000 换算,只需要 5001000MB 的空间,整整少了 12000MB,也就是 12GB 左右。但操作系统里读取硬盘时,则是按照 1024 进位的,所以你拿到手的硬盘在电脑上显示会比厂商标示的要少。显而易见的,硬盘的容量越大厂商们省的越多,但谁叫它就是有这么一个换算规范,你也不好说它是在偷工减料。

另外,如果差友同时拥有 Mac 和 Win 电脑,可能还会发现在两台电脑之间转移文件时,同个文件在两台电脑上显示的大小是不同的。

这也是不同的系统采用了不同进制规范的缘故。

网速的误区

至于运营商在宽带办理中宣传的 100M、1000M 实际使用时却没有那么快的网速,纯粹就是具体单位没有标清楚从而造成的误会。

100M 宽带里的 M 是 Mbps,而 100M/s 下载速度里的 M 是 MBps,摆在一起差友们就很容易发现它们的区别:

一个是小写 b,一个是大写 B。

前面 Mbps 是兆比特每秒,指的是每秒传输的位数量;MBps 则是兆字节每秒,指的是指每秒传输的字节数量。

别小看了这个 b,就因为存在着大小写的区别,两者之间就有了 8 倍的转换关系( 8bit = 1B ),这样一来,100 Mbps 的宽带,满打满算下载速度也只有 100/8 Mbps= 12.5M/s。

bps 与 pps

参考:

bps 和 pps 作为衡量网络吞吐量的单位,从功能上而言两者没有区别。但是,两者的使用环境截然不同。

bit per second(简称 bps),也可以表示成 b/s。常用的单位还有 Bytes per second(简称 Bps),速度向上扩展一下就是 KiB/s、MiB/s、etc. ,bps 是此类单位的最小单位 。

  • bps 用来描述 Bit rate(bit率)

 packet per second(简称 pps),也可以表示成 p/s 。不同于bps,这个单位不是用于文件传输速度的衡量,而是用于衡量交换机(switch),路由器(router)等网络设备对于帧(frame)或数据包(packet)的处理能力的单位。

  • pps 用来描述 Network throughput(网络吞吐量)

假设有2台带有干兆以太网NIC的PC通过路由器进行文件传输。(不讨论设备的相关设假设文件传输速度可达到最高值,则此例中为1 Gbps,如果以bps类对交换机处理能力进行量,记:此路由器处理能力为1 Gbps.

同样是这台交换机,连接2台带有快速(百兆)以太网NIC的PC进行文件传输,此时传输速率100 Mbps,则记:此路由器处理能力为100 Mbps.

显然,得出的结论是错误的。处理能力作为网络设备本身的属性不会因为所连接的设备而发生化。而能对其产生相对影响的另有他因。

就好像用电脑打游戏,游戏的fps不会因为你的鼠标是USB2.0还是USB3.0还是Bluetooth而改而通常能影响到的一般只有温度,还有其他正在使用显卡(GPU)的进程的使用量。

  • bps 用于表示传输速度
  • pps 用于表示数据包处理速度

那么,到底该如何才能相对准确地衡量网络设备对数据包进行处理的能力大小呢? 这个时候就轮到单位pps登场了。

对于一般网络设备,制造商会同时标注设备的传输速度(bps)和数据包处理速度(pps)

这是经过专门测量后标注的设备标准属性。

例如思科交换机Cisco Catalyst3560G-48Ts,其标注为:传输速度:32Gbps数据包处理速度:38.7M pps此时,例如以每秒38.7M个,长为1500B的数据包进行传输时,一秒所需的bps为: 1500Bytes/packet*38.7M packet/s*8 bit/Byte = 453.5G bps 可见结果远大于32Gbps,因此使用次交换机进行上述数据包类型传输时会导致严重堵塞。

同样,如果以 32Gbps 的速度传输长为 64B 的数据包,一秒所需的 pps 为: (32bps)/(64B/packet)/(8bit/B)=64M pps显然,由于结果远大于 38.7M pps,此类通信也会导致严重堵塞。