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 以Ti、 Gi、Mi和ki报告大小。还有那些 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)
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)。