ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

分清K、KB、Kb、b、B:存储与网络单位换算全攻略

分清K、KB、Kb、b、B:存储与网络单位换算全攻略 1. 先把这几个单位各自是什么搞清楚很多人第一次见到 K、KB、Kb、b、B 这些符号第一反应是这不都是存储单位吗——这么想就错了。它们确实都和数据量有关但有的表示存储容量有的表示传输速率还有的只是数量单位前缀。搞混它们轻则买硬盘时算错容量重则调度系统时把带宽估错导致服务雪崩一点都不夸张。我在实际工作中见过太多类似的坑有人把宽带标称的 100M 当成每秒能下载 100MB结果下载速度只有 12MB/s 左右就打电话投诉运营商缺斤短两也有人写程序时用malloc(1024*1024)以为申请了 1M 个字节结果和同事说的1M 内存完全对不上。这些问题的根源都是没把这五个符号背后的定义和换算关系彻底搞清楚。先给一个最直观的对照后面逐个展开符号全称含义类型典型场景bbit比特信息最小单位网络速率、文件大小少见BByte字节基本存储单位文件大小、内存容量Kbkilobit千比特带宽、码率KBkilobyte千字节存储容量、文件大小K或 kkilo-千数量级前缀和 b/B 组合使用才有意义1.1 比特 b计算机世界里最小的一格电比特英文 bit是 binary digit二进制数字的缩写。它的取值只有两个0 或 1。在物理层面它对应电路里的高电平和低电平、磁盘上的磁极方向、光盘上的凹坑与平面、SSD 里浮栅晶体管的电荷量。简单理解比特就是计算机里一个能表示是/否的格子。为什么要用二进制而不是十进制因为物理上最容易实现的稳定状态就是两种。你要是非整一套能分辨 10 种电压级别的存储单元噪声、温漂、制造工艺会分分钟教你做人。所以冯·诺依曼体系结构从一开始就把0 和 1作为信息的底座沿用至今。比特虽然是最小单位但在日常文件大小里几乎不用它因为单个比特能表达的信息实在太少了。一个英文字母就需要 8 个比特来编码一个汉字在 UTF-8 编码下需要 24 个比特3 字节。你要是说这个文件有 8000000 比特别人还得反应半天直接说1MB一秒就懂了。1.2 字节 B真正干活的计量单位字节Byte才是存储世界里真正的主角一个字节等于 8 个比特记作 1B 8b。为什么要 8 个比特凑一组历史上有过 6 位、7 位的字节但最终 8 位成为事实标准因为 8 位二进制刚好能表示 256 个不同值2^8 256足够覆盖大小写字母、数字、标点和控制字符——这正是早期 ASCII 编码的需求。从此文件大小MB、GB、内存容量GB、TB、磁盘分区大小GB、TB都以字节为基本单位。你平时说这个视频 2.5 个 G系统盘留 100 个 G这里的 G 全称是 GBGigabyte也就是字节的 10 亿倍或者 2^30 倍后面细说。字节和比特的关系就像打和个一打鸡蛋是 12 个一个字节是 8 个比特。你说给我来两打没人会理解成 2 个但可惜的是很多人在 Kb 和 KB 之间偏偏就理解成了 2 个。1.3 K 其实是数量级前缀大小写 K 的差别大得很单独一个 K 是不完整的它只是个前缀prefix意思是千。就像千米里的千、千克里的千K 必须挂在某个单位前面才有意义。所以K后面必须紧跟 b 或 B写成 Kb千比特或 KB千字节单独写这个文件有 500K其实是不严谨的只是大家口语里偷懒默认省略了 B 而已。但这还没完。K 的大小写是有讲究的小写 k 在国际单位制SI里表示 1000比如 km千米 1000mkg千克 1000g而大写 K 在计算机领域约定俗成表示 1024因为 2^10 1024非常接近 1000。所以k小写严格等于 1000遵循国际单位制K大写计算机行业习惯上等于 1024源于二进制寻址这个看似相差无几、实则差 2.4%的差异就是后面所有混乱的起点。更麻烦的是很多人写 KB/s 时根本没在意 K 的大小写有些软件界面里kbps用小写 k这里其实是 1000 的意思KB用大写 K这里是 1024 的意思两边一混换算就全乱了。2. 大小写 B 的生死之差bit 与 byte 的 8 倍鸿沟在所有单位混淆里最致命的就是 b 和 B 不分。一个是大写的 B字节一个是小写的 b比特差了一个字母的大小写数值上差了整整 8 倍。这不是差不多的级别是能让你把所有计算结果都错得离谱的级别。2.1 为什么 8 个比特才凑一个字节前面提到 ASCII 需要 256 个编码位那为什么不是 7 个比特128 位而是 8 个因为 7 位 ASCII 只覆盖英文和基本符号但计算机要处理的不只是英文。IBM System/360 在 1964 年确立了 8 位字节的标准理由是 8 位能更高效地存储字符同时方便用两个十六进制数表示每个十六进制数 4 位8 位正好两个后来 x86 架构沿用了这个设计8 位字节就此一统天下。从纯数学角度讲8 是 2 的幂2^3二进制寻址、对齐、硬件设计都方便。很多指令集里内存访问的最小单元天然就是字节而不是比特——你在 x86 上没法只操作一个比特最小也要操作一个字节。这也是为什么网络传输虽然按比特计速但最终落地到存储、文件、内存时全都要换算成字节。2.2 网络带宽的 bps 陷阱网络测速软件、运营商套餐页面上你看到的速度单位几乎永远是Mbps、Gbps注意这里的 b 是小写全称是 Megabits per second兆比特每秒。而下载工具、浏览器里显示的速度几乎永远是MB/s注意这里的 B 是大写全称是 Megabytes per second兆字节每秒。一 Mbps 等于多少 MB/s8 个比特才等于 1 个字节所以8 Mbps 1 MB/s100 Mbps 12.5 MB/s1000 Mbps1 Gbps 125 MB/s最简单的换算方法Mbps 除以 8就是理论最大 MB/s。反过来MB/s 乘以 8就是 Mbps。我以前帮朋友排查千兆宽带为什么下载只有 30MB/s的问题排查到最后发现他路由器 WAN 口协商速率只有 300Mbps实际有效吞吐还要打折。所以看到千兆宽带四个字第一反应不是下载能到 1000MB/s而是理论极限约 125MB/s实际还得打 7-8 折。2.3 运营商标称与下载速度的 8 倍换算用最经典的案例来说你办了 100Mbps 的宽带运营商说的是下行速率 100 兆比特每秒。换算成你能感知的下载速度100 Mbps ÷ 8 12.5 MB/s也就是说理论峰值每秒能下载 12.5 兆字节。在理想情况下你用一个好点的下载工具能达到 11-12MB/s 就算非常正常了。如果你拿测速网站测出 90Mbps 左右那其实是 100Mbps 打了 9 折属于正常衰减范围协议开销、信号衰减、服务器瓶颈都会吃掉一部分。很多人对这个 8 倍关系不理解看到20M 宽带就以为下载能到 20MB/s看到300M 宽带就幻想每秒 300MB 的飞一样体验——实际只有 37.5MB/s。我见过太多人拿着手机测速截图去质问运营商为什么我办的 100M 宽带测出来只有 12M——这中间就是漏看了这个 b 和 B 的大写。3. K 的两种血统1024 与 1000 的战争解决了 b 和 B 的问题还有第二个坑K 到底是 1000 还是 1024这个问题比你想的更拧巴——在存储领域两个答案都对但出现在不同场景下。3.1 二进制的 1024 从哪来计算机的内存寻址是按二进制走位的。CPU 的地址线有 10 根的时候能寻址的范围是 2^10 1024 个地址。1024 这个数字在二进制里正好是个整数好算、好对齐、好设计硬件。所以早期计算机科学家干脆约定在计算机内部1K 1024。于是有了1 KB 1024 B1 MB 1024 KB 1,048,576 B1 GB 1024 MB 1,073,741,824 B内存RAM是直接挂在 CPU 地址总线上的设备天然按 2 的幂组织容量所以内存世界里 1024 进制没有任何争议。你买一根 8GB 内存条系统识别出来就是 8 × 1024^3 字节显示 8GB没有任何缩水。3.2 硬盘厂商的 1000为什么 1TB 硬盘只有 931GB但到了硬盘、U 盘、固态硬盘这里厂商开始用 1000 进制。为什么因为 1000 是国际单位制SI的标准IBM、希捷、西数这些大厂在标注容量时用的是十进制千而不是二进制千。于是厂商标称 1TB 1,000,000,000,000 字节操作系统按 1024 进制计算1,000,000,000,000 ÷ 1024^3 931.32 GiB这就是为什么你买一个1TB硬盘插到电脑上只有 931GB买500GB硬盘实际约 465GB买128GB 手机存储空间显示约 119GB。这不是偷工减料纯粹是两种计数体系硬碰硬的结果。10 年前消费者经常拿这个事投诉硬盘厂商虚标后来厂商干脆在包装盒上用小字标注1GB 1,000,000,000 bytes从法律上站住了脚。技术上倒也好理解磁盘的物理扇区是按柱面、磁道、扇区组织的跟 2 的幂没有必然关系厂商按十进制标注反而是更诚实的做法。3.3 标准组织出手KiB、MiB 到底该不该用为了终结这场混乱国际电工委员会IEC在 1998 年发布了 IEC 60027-2 标准专门给二进制倍数定义了新名字KiBKibibyte千位二进制字节 1024 BMiBMebibyte兆位二进制字节 1024 KiB 1,048,576 BGiBGibibyte吉位二进制字节 1024 MiBTiBTebibyte太位二进制字节 1024 GiB而 KB、MB、GB 在严格标准下应该只表示 1000 进制。这样1TB 硬盘实测 931GB这种表述就变成1TB 硬盘实测 931GiB准确无歧义。但现实是操作系统Windows 尤其顽固至今还是在用 KB、MB、GB 这个名字显示 1024 进制的结果。macOS 稍微好点从 OS X 10.6 开始用了 1000 进制所以在 Mac 上买 1TB 硬盘会显示 1TB可用的那 931GB 显示为 931GB 而不是 0.91TB。这种双重标准短期内不可能消除我们能做的只有心里有数看到 KB 时先问一句这软件的开发者用的是 1024 还是 10004. 实操场景里的单位换算与避坑清单前两章讲的是定义和原理这一章直接上手。我在工作中经常要把带宽、存储、码率这几个单位来回倒腾总结了一套顺手的换算方法和几个高频踩坑场景一次性分享。4.1 一个最常用的换算速查表先把最常碰到的几组关系写死存货用不用现算你要换算的内容换算关系速记口诀1 B 8 b字节是比特的 8 倍1 KB 1024 B存储语境二进制千 ≈ 10241 kB 1000 B严格国际单位制十进制千 10001 Mbps 1000 kbps 约 0.125 MB/s宽带速率除以 8 得下载速度1 Gbps 1000 Mbps 约 125 MB/s千兆理论 125 兆字节每秒1 MB 1024 KB ≈ 106 KB 的十进制值存储按 10241 GB厂商 1,000,000,000 B ≈ 0.931 GiB买硬盘记住 0.931实际换算时我最常用的一个技巧先把所有单位统一成字节每秒或比特每秒再算中间不要跳步。比如10Gbps 网卡能跑多少 MB/s先把 Gbps 换成 bps10 × 10^9 bps再除以 8 1.25 × 10^9 B/s约 1192 MiB/s。你要是直接写 10G ÷ 8 1.25G 然后顺手当作 1250MB/s就差了 2.4%——不算大但在存储基准测试里会被行家一眼看出来。4.2 买硬盘、买宽带、写代码三个真实场景第一个场景买硬盘。你打算买个 2TB 移动硬盘到手插电脑上先别急着骂为什么只剩 1.81TB。用 2 × 10^12 字节 ÷ 1024^3 算一下2,000,000,000,000 ÷ 1,073,741,824 ≈ 1862.6 GiB显示为 1.81TiB或 1.81TB 按 Windows 字样。这个数如果对不上那才要怀疑是不是买到了扩容盘。第二个场景报宽带。公司要拉一条专线销售说1000M 上下行对等你给老板汇报时先换算好理论最大下载约 125MB/s考虑协议开销实际约 100-118MB/s。同时留意销售嘴里的1000M到底是 Mbps 还是 MBps一字之差价格和性能能差 8 倍。我见过有人在采购单里写1000M 专线供应商送来的却是1000Mbps如果没细看合同上线后验收直接傻眼。第三个场景写代码。在 C/C 里分配内存时1 20就是一个 MiB1,048,576 字节1 30是 GiB。有个坑是很多人拿1024 * 1024当 1M 用如果在某些语言里1024 * 1024默认整型运算没问题但你要分配的是一个十进制的1,000,000嘴上说的1M和代码里写的1MiB差了 48,576 字节。数据库连接池、缓存设置、JVM 堆大小全都有这个问题。JVM 的-Xmx1g用的是二进制 GiB而很多配置文件的maxFileSize1MB用的是十进制 MB比如某些框架解析时按 1,000,000 算两边一混预分配空间和实际占用永远对不上。4.3 音视频码率里的 Mb 和 MB千万别搞混视频领域里常见码率单位是 Mbps兆比特每秒。一个 1080p 视频如果码率是 8Mbps意思是每秒产生 8 兆比特的视频流。换算成每秒产生的文件大小8 ÷ 8 1MB/s。一小时视频大概多大8Mbps 1MB/s一小时 3600 秒总大小 1 × 3600 3600MB 约 3.52GiB所以 1080p 高码率电影动辄 10GB并不夸张。而 B 站、YouTube 上的1080p 清晰度往往压制到 3-5Mbps一小时大约 1.5-2.5GB这也是为什么网上视频没有蓝光原盘画质好的原因之一——码率被砍了画质必然受损。你如果做视频压制务必搞清楚目标码率是 Mbps 还是 MB/s。有人在压制软件里设成 8000 的kbps以为就是 8Mbps结果压出来码率 8000KB/s等于用户要花 64Mbps 的带宽看直接在移动网络下废掉。这种事在视频组里我从没见过一次两次。5. 常见误区与排查技巧实录最后整理一份一看就醒的误区清单和排查思路。很多问题其实不是设备坏了、不是网速被限、不是运营商坑你而是单位看错了。5.1 五个高频踩坑场景场景一测速网站显示 94Mbps但我宽带是 100M 的是不是被限速了不是。94Mbps 非常正常TCP/IP 协议头、Wi-Fi 传输开销、信号衰减、测速节点距离都会吃掉一部分带宽。100Mbps 能测到 90Mbps 以上线路就是健康的。真正要警惕的是测速只有 10-30Mbps那才可能是光猫、路由器、网线或信道问题。场景二我刚买的 1TB 硬盘在电脑里只有 931GB是不是买到假货不是。这是最经典的 1000 vs 1024 问题。不确定的话到磁盘管理里看字节数比如 1,000,202,739,200 字节除以 10^12 约等于 1.0002TB厂商没骗你。场景三下载文件时速度显示 11.2MB/s客服说我的宽带是 100M怎么换算直接用 11.2 × 8 89.6Mbps。这是因为真实下载速度要扣除协议开销和服务器瓶颈达到 12.5MB/s 的理论峰值很少见。89.6Mbps 相当于线路利用率为 89.6%已经很健康了。场景四NAS 里文件复制速度显示 110MB/s我的交换机是千兆的正常吗千兆交换机理论 约 1192MiB/s或 1000Mbps 换算成 125MB/s 十进制实际 SMB 协议开销、磁盘瓶颈、RAID 校验会吃掉一部分110MB/s 已经接近千兆网卡的极限了。如果你想提到 200MB/s 以上就得换 2.5G 或万兆网卡这不是软调能解决的。场景五在 Linux 里看到du -sh显示 2.1G这个 G 是 GiB 还是 GBGNU 工具默认用 1024 进制2.1G 约 2.1GiB 2.25GB十进制。如果想让 du 用十进制显示加--si参数。同理ls -lh也是 1024 制。养成习惯任何命令行工具给出的容量先查文档确认进制别想当然。5.2 一页纸速查K、KB、Kb、b、B 对照与换算把全篇浓缩成一张表打印出来贴工位上谁再问就甩给他符号英文全称含义数量级最易混淆点bbit比特信息最小单位一个 0 或 1和小写 b 是同一个东西BByte字节8 个比特1B 8b和 b 差 8 倍Kbkilobit千比特1Kb 1000b网速里常见KBkilobyte千字节1KB 1024B存储语境和 Kb 差 8 倍Kkkilo-前缀1000 或 1024 看语境单独出现无意义MbpsMegabits per second兆比特每秒1Mbps 1000kbps除以 8 得 MB/sMB/sMegabytes per second兆字节每秒1MB/s 8Mbps传输文件时的真实速度一句话总结全篇公式存储容量1KB 1024B1MB 1024KB1GB 1024MB操作系统语境硬盘标称1TB 10^12 字节换算成操作系统显示约 931GiB网络速率X Mbps ÷ 8 理论最大 X/8 MB/s容器/参数MiB1024²和 MB10⁶不是一回事写代码先看文档我个人在实际操作中体会最深的不是记不住这些定义而是默认别人写的单位和你理解的一致。凡是带宽、码率、容量混在一起的需求我拿到手第一件事就是让各方把单位统一写到字节/秒B/s级别再对齐。这个动作看着笨但在跨团队协作里省下的返工时间远超多写几行字的时间。数据单位的坑谁都踩过区别只是有人踩完爬起来有人一直在坑底打转。
返回列表