【计算机】单位制前缀的歧义-KB、kb、MB混用
引言
经常遇到容量、带宽的单位,MB,GB在进行单位换算时,总是傻傻分不清,查些资料浅记录一下。
公制(metric system)
又译米制,是一个国际化十进位量度系统。法国在1799年开始使用公制,是第一个使用公制的国家。源自公制的国际单位制已成为国际大多数国家的主要量度系统。美国是现今工业化国家中唯一未将国际单位制定义为官方量度系统的国家,不过自从1866年起也已开始在科研、医疗和军事领域使用国际单位制[1]。英国政府已承诺将许多量测单位改为公制系统,但民间还没有普遍使用,一般常用的单位仍是英制单位。
B和b
国际电工委员会(即International Electrotechnical Commission, IEC)与国际标准化组织(即International Standardization Organizat, ISO)于2008年联合颁布的技术标准ISO/IEC 80000-13《信息科学与技术》中的正式定义,字节的符号为大写英文字母“B”,而比特的符号为小写字母“b”。这也是kB与kb之间的区别——一个是“千字节”,一个是“千比特”。
实际上比特与字节都是十分常用的单位,只是二者常用的领域不同。字节常被用作数据储存容量的最小单位,而比特常被用作数据传输速率的最小单位,例如b/s(比特每秒,也写作bps),如果数据下载速率为810kb/s。
两种单位有着不同的常用领域。但用字节形容数据传输速度,用比特形容数据大小也是完全没有问题的,具体情况具体规范。
那么100M的带宽(也就是100Mbps),下载的理论速度是12.5MB/s。
单位制前缀
SI
国际单位制
国际单位制(法语:Système International d’Unités,简称SI),源于公制,是世界上最普遍采用的标准度量系统。国际单位制以七个基本单位为基础,由此建立起一系列相互换算关系明确的“一致单位”。另有二十个基于十进制的词头(前缀),当加在单位名称或单位符号前的时候,可用于表达该单位的倍数或分数。
在精确度不是很重要的上下文中,如文件和内存大小,这些词头被广泛使用来表示二进制,但是和国际单位制词头的定义相冲突。
IEC
二进制词头
KB / KiB,MB / MiB,GB / GiB,… 的区别是什么?
KB / KiB,MB / MiB,GB / GiB,… 的区别是什么?
1999年,国际电工委员会(IEC)公布了修正2:“IEC 60027-2:电工技术应用的字母符号—第二部分:通信和电子。”这个标准,在1998年通过,介绍了词头“kibi-”、“mebi-”、“gibi-”、“tebi-”、“pebi-”、“exbi-”,作为二进制乘幂的计数方法。名字的前两个字母来源于原来的国际单位制词头(例如, kilo binary byte缩写为“kibi-Byte”、“kiB”、“kibi-byte”),而后面的“bi”是二进制的缩写。同时明确定义,从IEC的观点来看,国际单位制词头只有十进制的意义而不再用作二进制的意义。
二进制词头已经被很多其他组织采用了,比较著名的有电气电子工程师协会(参见IEEE 1541),欧洲联盟(作为一致性文件HD 60027-2:2003-03[2])。然而,缺少官方支持,二进制词头还没有广泛被制造业者和个人采用,很多人继续在二进制领域使用国际单位制词头。
早期计算机的信息存储容量都很小。在这样的情况下,1 kB代表的到底是1000字节还是1024字节似乎并不是那么重要,毕竟这24字节的差异在1000字节面前也只是2.4%的误差而已。随着大小增加,百分比差距在十进制和二进制之间变大,从2.4%(千-K)到超过25%。
kB与KiB这两个单位之间的歧义就消失了吗?事实上并没有。许多计算机操作系统,例如当今应用非常广泛的Windows系统就保留了“kB系列”的单位,使用1 kB来指代1024 B。而与电脑操作系统上1 kB = 1024 B不同的是,许多硬盘制造商的指标中却又保留着1 kB = 1000 B的标准。因此很多消费者就会注意到自己购买得明明是“1 TB”(1, 099, 511, 627, 776 B)硬盘,但在插到电脑上后硬盘的大小却“缩水”成了“954 GB”(1, 000, 000, 000, 000)的情况。这就是计算机操作系统和硬盘制造商所使用的单位标准不同而导致的,也是业界标准混乱的一个体现。
什么单位被使用和乘幂是二进制还是十进制,依赖于上下文并且不能由单位单独确定。

场景
硬盘
硬盘制造商用十进制来表示容量。这种用法有很长久的传统,甚至在国际单位制词头在1960年采用前就开始使用了。例如,第一个IBM350的硬盘有5,000,000个6比特字在100个字扇区(如块)组合起来。这出现在国际单位制词头之前。所有硬盘驱动器制造商都使用SI前缀声明容量。
内存
由于当前硬件寻址系统的固有二进制设计,许多计算机程序任务以 2 的幂来引用内存。所以一直是按照JEDEC 内存标准来使用传统前缀。
windows操作系统
采用二进制报告容量,买一个30 GB(
30×10^9字节)的硬盘会明显少了容量,因为Microsoft Windows不会报告30 GB,而是用两种方法来报告硬盘的容量:30,064,771,072字节和28 GB(28×2^30字节)。
macOS系统
现在Apple 产品规范、iOS 和 macOS(包括Mac OS X Snow Leopard:10.6 版)现在使用SI 前缀报告容量。
相关文章:
【计算机】单位制前缀的歧义-KB、kb、MB混用
引言 经常遇到容量、带宽的单位,MB,GB在进行单位换算时,总是傻傻分不清,查些资料浅记录一下。 公制(metric system) 又译米制,是一个国际化十进位量度系统。法国在1799年开始使用公制…...
nodejs调用浏览器打开URL链接
本文主要介绍的是node.js调用Chrome浏览器/默认浏览器打开链接地址的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 安装第三方插件open 通过open模块,可以在任何平台上打开某个浏览器网址。 通过NPM安装 npm i…...
ARM uboot 的移植2-从三星官方 uboot 开始移植
一、inand 驱动问题的解决 1、先从现象出发定位问题 (1) 解决问题的第一步,是定位问题。所谓定位问题,就是找到源代码当中导致这个问题的那一句或者那几句代码。有时候解决这个问题需要修改的代码和直接导致这个问题的代码是不同的。我们这里说的定位问…...
js作用域和作用域链
1、局部作用域分为函数作用域和块作用域 1.1、函数作用域: 在函数内部声明的变量只能在函数内部被访问,外部无法直接访问。 总结 1.函数内部声明的变量,在函数外部无法被访问 2.函数的参数也是函数内部的局部变量 3.不同函数内部声明的变量无法互相访…...
C语言字符串
目录 一、字符串的引入和注意事项 1.1 字符串定义的几种方式: 1.2 定义字符串的方法一和方法二的区别: 1.3 字符串输出的几种方式: 1.3.1 循环下标法遍历输出字符串: 1.3.2 转义字符%s输出字符串: 1.3.3 使用puts函…...
Eureka注册中心快速入门
一、提供者与消费者**服务提供者:**一次业务中,被其他微服务调用的服务。(提供接口给其他微服务)**服务消费者:**一次业务中,调用其他微服务的服务。(调用其它微服务提供的接口)比如…...
xmu 离散数学 卢杨班作业详解【1-3章】
文章目录第一章 命题逻辑常用latex数学公式1.4.5679101113171923242627第二章 一阶逻辑1.2.3.6.9.10.12.13.一阶逻辑推理理论12.13.15.第三章 集合2478101213.第一章 命题逻辑 常用latex数学公式 符号代码∨\vee∨$\vee$∧\wedge∧$\wedge$→\rightarrow→$\rightarrow$⇒\Ri…...
mvn命令
在IDEA右侧Maven菜单中,有以下几种指令。 clean:清理,清除上一次构建生产的文件。执行该命令会删除项目地址下的target文件,但不会删除本地的maven已生成的文件。 validate:验证,验证项目是否正确且所有必…...
JS - 事件循环EventLoop
一、面试题:说一下事件循环(回答思路梳理) 首先 js 是单线程运行的( JS 可以修改 DOM,如果在 JS 执行的时候 UI 线程还在工作,就可能导致不能安全的渲染 UI),在代码执行的时候&…...
【Java基础】30分钟Git 从入门到精通
一、 版本控制工具1、什么是版本控制系统?版本控制系统(Version Control System):是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对…...
0100 MySQL03
1.distinct关键字 把查询结果去除重复记录,原表数据不会被修改,只能出现在字段的最前端 select distinct job from emp; select distinct job,deptno from emp;//表示两个字段联合起来 去重 2.连接查询 从一张表中单独查询,称为单表查询 两张表联合…...
32- PyTorch基础 (PyTorch系列) (深度学习)
知识要点 PyTorch可以说是现阶段主流的深度学习框架 . 1 PyTorch入门 1.1 PyTorch概述 Torch是什么?一个火炬!其实跟Tensorflow中Tensor是一个意思,可以当做是能在GPU中计算的矩阵.,也可以当做是ndarray的GPU版! PyT…...
用gdb.attach()在gdb下断点但没停下的情况及解决办法
在python中,如果导入了pwntools,就可以使用里面的gdb.attach(io)的命令来下断点。 但是这一次鼠鼠遇到了一个情况就是下了断点,但是仍然无法在断点处开始运行,奇奇怪怪。 这是我的攻击脚本 我们运行一下。 可以看到其实已经运行起…...
Linux入门篇-作业(jobs)调度(本质仍然是进程)
简介 之所以叫做作业调度,作业是以shell为单位的,一个shell建立的作业,不会被另外一个shell看到(包 括root),但是仍然可以看到作业对应的进程。①前台进程(front process) 运行在用户…...
vue 监听 取消监听
vue 的 watch 除了可以使用声明式的配置项以外,还可以通过命令式 this.$watch 方法。 如下是我们比较少用的命令式(想要初始只监听一次,必须命令式写法): 监听只运行一次 声明式 export default{data: {showType: fa…...
0103深度优先搜索和单点连通-无向图-数据结构和算法(Java)
文章目录1.1 走迷宫1.2 图的深度优先搜索实现1.3 算法分析及性能1. 4 单点连通性后记1.1 走迷宫 简单的迷宫,如下图1.1-1所示: 探索迷宫而不迷路,我们需要: 选择一条没有标记过的通道,在你走过的路上铺一条绳子&…...
进销存管理系统
技术:Java等摘要:进销存管理系统是为了实现企业仓库商品管理的系统化、规范化和自动化,从而提高企业管理效率而设计开发的管理信息系统。它完全取代了过去一直用人工管理的工作方式,避免了由于管理人员手工操作上的疏忽以及管理质…...
Sonar:VSCode配置SonarLint/SonarLint连接SonarQube
需求描述 公司为项目代码配置了Sonar检测,希望在VSCode中开发项目时能够同步检测结果。 注意事项 SonarQube版本必须为7.9,否则SonarLint无法连接(GitHub-SonarLint-Wiki第一行就有说明)!!!S…...
陀螺仪小车(Forerake-Car)
项目简介:搭建一辆有arduino UNO 与rnf24l01组成的小车;手部安装由arduino nano开发板、nrf24l01、imu构成的手势控制器,利用手势控制器检测手部状态、发送信号对小车进行前进,实现基于卡尔曼滤波的MPU6050姿态结算。 准备工作&am…...
Leetcode Day5 含有重复元素集合的组合+
1、含有重复元素集合的组合 给定一个可能有重复数字的整数数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次,解集不能包含重复的组合。 【题目传送门】 思…...
开源音乐解锁工具:浏览器端全平台音频解密解决方案
开源音乐解锁工具:浏览器端全平台音频解密解决方案 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://…...
Mac 安装 Java JDK 完整教程:一篇文章讲透安装、配置、多版本管理
一、Java JDK 详解1.1 什么是 JDK?JDK(Java Development Kit,Java 开发工具包)是 Oracle 公司提供的用于 Java 程序开发的完整软件包。它是 Java 开发者不可或缺的核心工具,包含了编写、编译、调试和运行 Java 程序所需…...
【后端】主流后端语言横向对比:JAVA、C、C++、GO、PYTHON的实战应用与选型指南
1. 五种主流后端语言的核心特性对比 第一次接触后端开发时,面对众多编程语言的选择确实容易犯难。我至今记得2013年参与电商系统重构时,团队为选择Java还是Go争论了两周。这五种语言就像不同的工具——没有绝对的好坏,关键要看用在什么场景。…...
CodeMirror边栏不止能显示行号:手把手教你打造代码调试器与个性化标记系统
CodeMirror边栏不止能显示行号:手把手教你打造代码调试器与个性化标记系统 在代码编辑器的演进历程中,边栏(Gutter)这个看似简单的区域,已经从单纯显示行号的辅助工具,进化为开发者与代码交互的重要界面。想…...
iOS高级开发工程师技术体系与民航行业实践深度解析
第一章 iOS开发技术核心体系 1.1 Swift与Objective-C双语言生态 现代iOS开发需要掌握两种核心语言的技术特点: // Swift类型安全示例 enum FlightStatus {case scheduled, departed, landed, canceled }var currentStatus: FlightStatus = .scheduled// 编译器会阻止非法状…...
键盘连击终结者:开源工具KeyboardChatterBlocker让老化键盘重获新生
键盘连击终结者:开源工具KeyboardChatterBlocker让老化键盘重获新生 【免费下载链接】KeyboardChatterBlocker A handy quick tool for blocking mechanical keyboard chatter. 项目地址: https://gitcode.com/gh_mirrors/ke/KeyboardChatterBlocker 机械键盘…...
保姆级教程:用Nordic NRF52832搞定SIF一线通协议收发(附完整代码)
Nordic NRF52832实战:SIF一线通协议全双工通信开发指南 在物联网设备开发中,单线通信协议因其布线简单、成本低廉而广受欢迎。SIF(Single Interface)作为一种轻量级一线通协议,特别适合传感器与控制器之间的短距离数据…...
3大核心价值:Path of Building离线构建规划工具全解析
3大核心价值:Path of Building离线构建规划工具全解析 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding Path of Building(简称PoB)是《…...
技术债务管理:如何与产品经理就“还债”达成共识?
在追求快速迭代和功能交付的软件开发浪潮中,技术债务如同潜伏在系统深处的“慢性病”,悄然累积,最终可能引发系统脆弱、交付迟滞、团队士气低落等一系列并发症。对于软件测试从业者而言,技术债务带来的影响尤为直接:测…...
Mac 本地轻量级 K8s 开发环境实战指南
1. 为什么要在Mac上搭建轻量级K8s环境? 作为开发者,我们经常需要在本地测试Kubernetes应用,但传统方案要么太重(如完整K8s集群),要么太慢(如云环境)。在Mac上搭建轻量级K8s环境可以完…...
