我刚刚意识到,在 PowerShell(甚至一般的 Windows 环境)中,这就是大小单位的处理方式:
1mb ... 1048576 ......... not 1000000
1gb ... 1073741824 ...... not 1000000000
1tb ... 1099511627776 ... not 1000000000000
有人可以向我解释这种疯狂吗?为什么在世界上被1mb
考虑1048576
而不是1000000
?
我刚刚意识到,在 PowerShell(甚至一般的 Windows 环境)中,这就是大小单位的处理方式:
1mb ... 1048576 ......... not 1000000
1gb ... 1073741824 ...... not 1000000000
1tb ... 1099511627776 ... not 1000000000000
有人可以向我解释这种疯狂吗?为什么在世界上被1mb
考虑1048576
而不是1000000
?
首先,我必须注意,后者(字节)是前者(位)的 8 倍,两者之间存在很大差异。并且前缀也是区分大小写的。没有or ,而表示“毫”,它不能应用于位或字节等单位大小。像 1 mb = 1 毫比特这样的值没有意义
b
B
g
t
m
关于前缀,几十年来在计算机相关领域几乎一直是二进制的,因为电子计算机以二进制运行。如果有人说他们有 1 GB 的 RAM,这意味着他们有 1024 MB 的内存而不是 1000 MB,因为内存芯片的大小总是 2 的幂。与许多其他单位相同,例如硬盘块大小,其中 4K 表示 4096 而不是4000. 以下是一些前缀示例
对于粗略的转换,只需像正常的 SI 方式一样乘以/除以 10 的幂。如果 2 个单位彼此相距不太远,则结果将足够接近。
1995 年提出了一类新的二进制值单独前缀,但直到近 10 年前 Linux 和 Mac 开始切换到使用十进制值中的前缀时才受到关注
这种过渡使磁盘大小在操作系统更新后突然“改变”(因为旧 MB 比新 MB 大),让许多用户感到困惑。Linux 命令行工具仍然使用二进制前缀(可能除了一些用于操作磁盘分区的新工具需要根据情况显示十进制或二进制)。由于我上面提到的原因,RAM 大小仍然以二进制形式报告。
Windows 没有采用新的约定,仍然只使用前缀和它们的二进制值
Ubuntu的政策细节是这样的
这只是您与哪个基地合作的问题。在 base 10(人类如何工作)中,1 MB 是 100 万字节
在 Base 2 (Binary) 中,数字不是那么圆。