千字节、千比特和千字节有什么区别?

Red*_*ite 48 storage data-transfer

这个问题让我想知道这三种测量大小的方法之间的区别: kibibyte kilobit和传统的kilobyte

我知道这些测量有不同的用途(数据传输速率以位/秒为单位),但我不太确定我是否能分辨出 Mb 和 MB 和 MiB 之间的区别。

这是一条评论,转载如下,取自这个答案强调我的)。

C64 有 65536字节的 RAM。按照惯例,内存大小以kibiBytes 为单位,数据传输速率以 KB 为单位,海量存储以what -the-manufacturers-think-of-now- Bytes 为单位。硬盘在标签上使用 T、G、M 和 k,Windows 以TiGiMiki报告大小。还有那些 1.44MB 的软盘?这些既不是 1.44MB 也不是 1.44MiB,它们是 1.44 KB。那是 1440kiB 或 1'474'560 字节。– 第三

squ*_*cle 66

1 KiB (Kibibyte) = 1,024 B (Bytes) (2^10 Bytes)
1 kb  (Kilobit)  =   125 B (Bytes) (10^3 Bits ÷ (8 bits / byte) = 125 B)
1 kB  (Kilobyte) = 1,000 B (Bytes) (10^3 Bytes)
Run Code Online (Sandbox Code Playgroud)

任何 SI 前缀都是一样的;k(1x10 3 ), M(1x10 6 ), G(1x10 9 ),因此,通过扩展:

1 MiB (Mebibyte) = 1,048,576 B (Bytes) (2^20 Bytes)
1 Mb  (Megabit)  =   125,000 B (Bytes) (10^6 Bits ÷ (8 bits / byte) = 125,000 B)
1 MB  (Megabyte) = 1,000,000 B (Bytes) (10^6 Bytes)
Run Code Online (Sandbox Code Playgroud)

只有那些有一点不同的是IEC二进制前缀(吉备/ MEBI /吉比等),因为他们在基地2个,不垒10(例如,所有的数字等于2的东西,而不是10的东西)。我更喜欢只使用 SI 前缀,因为我发现它更容易。另外,加拿大(我的国家)使用公制系统,所以我习惯了,例如1kg = 1000g(或1k anything = 1000 base things)。这些都没有错或对;只要确保您知道您使用的是哪一种以及它真正等同于什么。

为了安抚评论者:

1 Byte (B) = 2 nibbles = 8 bits (b)
Run Code Online (Sandbox Code Playgroud)

这就是为什么,如果您曾经在十六进制编辑器中查看过,所有内容都被拆分为两个十六进制字符;每个十六进制字符是一个半字节的大小,一个字节有两个。例如:

198 (decimal) = C6 (hex) = 11000110 (bits)
Run Code Online (Sandbox Code Playgroud)

  • +1 提到一个字节中有 8 位可能很有用。 (5认同)
  • ...不要忘记一个 nybble 是四位(或半字节)! (4认同)
  • 可能还知道小写的“b”有时被错误地用于缩写“字节”。我看到很多地方只是在缩写中使用“bit”,例如 MB 表示兆字节,Mbit 表示兆位,并且完全远离“b”。 (4认同)
  • 前缀kilo缩写为k,而不是K。 (4认同)

Syn*_*ech 10

有一些简单易懂的基本术语:

* A bit      (b)   is the smallest unit of data comprised of just {0,1}
* 1 nibble   (-)   = 4 bits (cutesy term with limited usage; mostly bitfields)
* 1 byte     (B)   = 8 bits (you could also say 2 nibbles, but that’s rare)
Run Code Online (Sandbox Code Playgroud)

在位和字节之间进行转换(带任何前缀),只需乘以或除以八;很好很简单。

现在,事情变得有点复杂,因为有两种测量大量数据的系统:十进制二进制。多年来,计算机程序员和工程师只是对两者使用相同的术语,但这种混淆最终引发了一些标准化适当前缀集的尝试

每个系统都使用一组类似的前缀,可以应用于位或字节。每个前缀在两个系统中的开头都相同,但二进制前缀在此之后听起来像婴儿谈话。

十进制系统是以 10 为底的,大多数人都习惯并习惯使用,因为我们有 10 个手指。二进制系统是以 2 为基数的,大多数计算机都习惯使用它并且使用起来很舒服,因为它们有两种电压状态。

十进制系统对大多数人来说是显而易见且易于使用的(它很简单,可以在我们的脑海中进行乘法运算)。每个前缀增加 1,000(原因完全不同)。

二进制系统对于大多数非计算机人员来说更难使用,甚至程序员也经常无法在头脑中组合任意大的数字。然而,这是两个的倍数的简单问题。每个前缀增加 1,024。一个“K”是 1,024,因为这是 1,000 的十进制“k”最接近的二的幂(这在这一点上可能是正确的,但差异随着每个连续前缀而迅速增加)。

具有相同前缀的位和字节的数字相同。

* Decimal:
* 1 kilobyte (kB)  = 1,000 B  = 1,000^1 B           1,000 B
* 1 megabyte (MB)  = 1,000 KB = 1,000^2 B =     1,000,000 B
* 1 gigabyte (GB)  = 1,000 MB = 1,000^3 B = 1,000,000,000 B

* 1 kilobit  (kb)  = 1,000 b  = 1,000^1 b           1,000 b
* 1 megabit  (Mb)  = 1,000 Kb = 1,000^2 b =     1,000,000 b
* 1 gigabit  (Gb)  = 1,000 Mb = 1,000^3 b = 1,000,000,000 b

* …and so on, just like with normal Metric units meters, liters, etc.
* each successive prefix is the previous one multiplied by 1,000



* Binary:
* 1 kibibyte (KiB) = 1,024 B  = 1,024^1 B           1,024 B
* 1 mebibyte (MiB) = 1,024 KB = 1,024^2 B =     1,048,576 B
* 1 gibibyte (GiB) = 1,024 MB = 1,024^3 B = 1,073,741,824 B

* 1 kibibit  (Kib) = 1,024 b  = 1,024^1 b =         1,024 b
* 1 mebibit  (Mib) = 1,024 Kb = 1,024^2 b =     1,048,576 b
* 1 gibibit  (Gib) = 1,024 Mb = 1,024^3 b = 1,073,741,824 b

* …and so on, using similar prefixes as Metric, but with funny, ebi’s and ibi’s
* each successive prefix is the previous one multiplied by 1,024
Run Code Online (Sandbox Code Playgroud)

请注意,十进制和二进制系统之间的差异开始很小(在 1K 时,它们只有 24 个字节,或相距 2.4%),但随着每个级别的增加而增加(在 1G 时,它们 >70MiB,或相距 6.9%)。

作为一般经验法则,硬件设备使用十进制单位(无论是位还是字节),而软件使用二进制(通常是字节)。

这就是一些制造商,尤其是驱动器制造商喜欢使用十进制单位的原因,因为它使驱动器尺寸听起来更大,但用户在看到 Windows 等时发现它比他们预期的要少时会感到沮丧。阿尔。以二进制报告大小。例如,500GB = 476GiB,因此当驱动器包含 500GB 并标记为这样时,我的电脑显示二进制 476GiB(但显示为“476GB”),因此用户想知道其他 23GB 去哪儿了。(驱动器制造商经常在包中添加一个脚注,说明“格式化的大小更小”,这是一种误导,因为与十进制和二进制单位之间的差异相比,文件系统开销微不足道。)

出于历史原因,网络设备通常使用位而不是字节,并且 ISP 经常喜欢使用位做广告,因为它使他们提供的连接速度听起来更大:12Mibps 而不是 1.5MiBps。他们甚至经常混合和匹配位和字节以及十进制和二进制。例如,您可能订阅了 ISP 所谓的“12MBps”线路,认为您获得了 12MiBps,但实际上只收到了 1.43MiBps (12,000,000/8/1024/1024)。

  • @endolith,不是真的。首先,确实有,或者至少在过去有一些使用二进制单位的驱动器制造商。其次,你没有抓住重点。如果他们愿意,他们可以将 73,400,320 放在驱动器上,这确实是 70M(i)B 而不是 66。他们使用 70,000,000,因为使用它更便宜,并且仍然称其为“70MB”。这是简单的偷工减料,许多制造商都这样做。看食物;他们会放 454G 而不是 500G,因为它等于 1LB。更糟糕的是,他们将使用 450G 而不是 454G,并将缺少的 4G 归咎于四舍五入。这不是阴谋,而是削减成本。 (2认同)
  • 我已经浏览了 bitavers 档案,我找到的所有示例都是十进制的。驱动制造商在某些时候从二进制转换为十进制以欺骗客户的神话是荒谬的。它们不是由营销部门编写的,而是由工程师使用工程师使用的标准单位编写的。将 70,000,000 字节的 IBM 3340 驱动器称为“70 MB”是合乎逻辑且理智的。这就是“mega-”一直以来的意思,也是用户所期望的。在某些地方称其为“66 MB”而在其他地方称其为“68,359 KB”,就像 Microsoft Windows 那样,是很疯狂的。 (2认同)