二进制、字符编码与存储单位换算:从电平信号到容量之谜

发布时间:2026/10/18 7:45:51
二进制、字符编码与存储单位换算:从电平信号到容量之谜 很多刚接触计算机的人都会有这种困惑电脑里存的文件、图片、视频本质上都是数字 0 和 1可为什么存储设备出厂标称 64GB插到电脑上却只剩下 59.6GB为什么下载速度明明是 100Mbps实际每秒却只有 12MB 左右这些问题看起来互不相关根源其实都落在数字转换和计算机存储基础这套最底层的逻辑上。如果你以前只知道“计算机就是存 0 和 1”却说不清 0 和 1 是怎么变成数字、变成文字、最后变成我们看到的文件大小的那这篇文章可以帮你把整条链路打通。我会从物理层的电平信号讲起一路聊到进制转换、字符编码和存储单位换算中间穿插大量可以直接上手验证的小实验和实用口诀。无论你是刚开始学计算机基础的学生、准备转行做开发的新人还是单纯好奇电脑内部原理的爱好者这篇内容都能给你一个清晰完整的认知框架而且读完就能讲给别人听。1. 从电平到二进制数字系统为什么偏偏只认 0 和 11.1 十个手指带来的惯性思维我们平时数数用的是十进制0 到 9 十个数字逢十进一。这件事太自然了自然到没人会质疑“为什么要用十个符号”。但细想一下十进制并不是数学上的必然选择——它更多来自人类长了十根手指计数方便而已。假如我们只有四根手指今天可能就是八进制走天下了。计算机完全不同。它没有手指它只有电路。一个电路的状态要么是通电要么是断电一个晶体管的开关要么导通要么截止一个电容的电压要么高于阈值要么低于阈值。这种“非此即彼”的物理特性天然就只有两种稳定状态用符号表示就是 0 和 1也就是二进制。有人会问能不能给电路设计出十种稳定状态直接模拟十进制理论上可以比如用 10 个不同的电压等级代表 0 到 9。但在工程实践上这会把问题变得极其复杂。电压会受到温度、电源波动、电磁干扰等影响一个标称 3V 的信号可能实测变成 2.8V如果 10 个等级之间的区分度不够大系统随时可能把 5 错判成 6。二进制的好处在于两种状态之间间隔极大只要电压没有偏移到超过中间阈值接收端就能毫无误差地判断出当前是 0 还是 1。换句话说数字系统用“牺牲表达密度”换来了“极致的抗干扰能力”。这也是为什么从几十年前的继电器计算机到今天的超大规模集成电路底层逻辑始终没有跳出二进制的框架。1.2 一个开关就是一个位多个开关才能表达世界单个二进制位能表示的信息非常有限要么是 0要么是 1只有两种可能。但如果把多个位组合起来表达能力就按指数爆发。这个规律可以用一个很简单的公式概括n 个二进制位可以表示 2 的 n 次方种不同状态。1 位2^1 2 种状态2 位2^2 4 种状态4 位2^4 16 种状态8 位2^8 256 种状态32 位2^32 ≈ 42.9 亿种状态64 位2^64 ≈ 1844 亿亿种状态这就是“8 位等于 1 字节”这个基本事实的由来8 个开关组合在一起刚好能覆盖 256 个不同符号足够容纳英文字母大小写、数字、标点和常见控制字符。你可能也听过“32 位系统最多支持 4GB 内存”的说法本质就是因为 32 个二进制位的地址空间只有约 42.9 亿个组合每个组合对应一个字节位置算下来刚好是 4GB 出头。我还见过不少同学把内存、硬盘和 CPU 的位宽搅在一起以为“64 位系统 支持 64GB 内存”。其实这是两个层面的问题位宽决定了处理器单次能处理的二进制位数而内存寻址范围还受地址线根数和操作系统设计共同影响。搞清楚“位”和“字节”的区别后面所有单位换算才不会一上来就懵。1.3 模拟信号与数字信号的分水岭聊到 0 和 1就绕不开模拟信号和数字信号的本质差异。模拟信号是连续变化的比如老式收音机里的音频波形、传统水银温度计里的液柱高度数字信号则是离散的只有高低两种判定结果。用生活里的场景来类比模拟信号像一辆沿着斜坡匀速滑行的车你随时都能说出它位于哪个具体位置但它最怕路面颠簸——一点噪声就会让位置读数偏移。数字信号则像一段楼梯你不需要精确知道每个踏步的高度只要每一步都能判断“在上层还是下层”即便路上有些小石子也不影响你数清楚走了几级台阶。这就是为什么二进制系统可以把高电平设计得离低电平足够远中间再留出缓冲区。信号传来时只要没越过中线接收端就能通过整形电路“拽”回标准值。这个特性让数字存储技术获得了一个巨大的红利信号在拷贝、传输、放大过程中几乎不会出现累积性失真。你可以把一份数字文件复制一万次得到的内容和源文件一模一样但如果是模拟磁带录音翻录每翻录一次音质就损失一截。理解了这个物理原理你就能真正理解为什么数字革命能彻底改变信息产业。2. 进制转换实战为什么十六进制在计算机领域无处不在2.1 二进制写长文太痛苦于是有了八进制和十六进制二进制虽然逻辑简单但阅读体验极差。一个 32 位的数字写成二进制是11010011001011010000110111001001看着就头大。于是工程师们想到了两个折中方案八进制和十六进制。因为 8 等于 2 的 3 次方、16 等于 2 的 4 次方它们与二进制之间的转换不需要任何复杂计算只需要“分组映射”。十六进制尤其常用因为 1 位十六进制数恰好对应 4 位二进制数。上面那串 32 位二进制从右往左每 4 位切一组变成1101 0011 0010 1101 0000 1101 1100 1001查表后写作十六进制就是 0xD32D0DC9长度缩短到四分之一。内存地址、RGB 颜色值、MAC 地址、汇编指令里到处都是十六进制理由就是它既保持了和二进制的紧密对应关系又对人类阅读足够友好。八进制现在用得少了主要在一些 Unix 文件权限如 755、644里还能见到身影。2.2 十进制与二进制互转两个基础方法必须吃透先说二进制转十进制方法叫“按权展开”。比如二进制数 1011从右往左每一位的权值分别是 2^0、2^1、2^2、2^3于是1011 1×2^3 0×2^2 1×2^1 1×2^0 8 0 2 1 11这个逻辑和十进制完全一样。十进制 231 是什么就是 2×10^2 3×10^1 1×10^0。只不过二进制把底数 10 换成了 2把可用的数字符号从 0~9 缩成了 0 和 1。再说十进制转二进制标准方法是“除 2 取余逆序排列”。以 25 为例25 ÷ 2 12 余 112 ÷ 2 6 余 06 ÷ 2 3 余 03 ÷ 2 1 余 11 ÷ 2 0 余 1把余数从下往上写得到 11001。很多初学者在这里会栽跟头明明每一步都对最后却因为顺序写反而错了。记住一个口诀短除法余数从下往上念。你第一次除以 2 得到的余数是二进制最低位不是最高位这个方向感非常容易搞反。小数部分则反过来用“乘 2 取整正序排列”。比如把十进制小数 0.625 转二进制0.625 × 2 1.25取整数部分 1剩 0.250.25 × 2 0.5取整数部分 0剩 0.50.5 × 2 1.0取整数部分 1剩 0依次写下 1、0、1所以 0.625 的二进制就是 0.101。这里最容易出错的地方是很多人会把“取整”误写成“取模”请一定注意小数转换是拿掉整数部分后继续乘 2不是拿余数。2.3 快速分组法四位二进制速查十六进制如果每次转进制都要按权展开效率实在太低。更实用的办法是直接记住这张四位映射表二进制十六进制二进制十六进制00000100080001110019001021010A001131011B010041100C010151101D011061110E011171111F有了这张表任何二进制转十六进制都变成机械操作从右往左每 4 位一组不足 4 位在前面补 0然后逐组查表。反过来把十六进制每一位展开成对应的 4 位二进制拼接起来就是二进制结果。例如十六进制 0x3F9拆开是 3、F、9 三组分别对应 0011、1111、1001拼起来就是 001111111001。再强调一次分组方向永远是从右往左尤其是二进制数位不是 4 的整数倍时要在左侧补零而不是右侧这一步做反了结果会完全错乱。2.4 负数怎么存补码才是真正的计算机思维如果只聊正整数二进制似乎很简单。但计算机里必然要处理负数这就出现了一个绕不开的问题负号用什么表示最初的尝试是用最高位当符号位比如 8 位二进制里00000001 表示 110000001 表示 -1。这套“原码”方案看着直观却有一个致命问题它会产生两个 0也就是 00000000 表示 010000000 表示 -0这在数学上完全站不住脚。而且用原码做加法时正负号不同会导致需要额外设计一套“先比较大小再决定加减”的逻辑电路会变得无比复杂。于是补码方案登场了。补码的核心思想对于一个 n 位系统负数 -x 用 2^n - x 来表示。听起来抽象用时钟就特别好理解时钟走到 9 点你想要到 6 点可以逆时针拨 3 小时也可以顺时针拨 9 小时因为 9 点加 9 小时等于 18 点对 12 取余得到 6 点。在这个“12 进制”的世界里-3 就等价于 9。计算机里的补码就是这种“模运算”思想的二进制实现。8 位二进制系统相当于一个只有 0~255 的环形表盘加到 255 再加 1 就溢回 0。于是 -1 被表示成 255即 111111111 加上 -1 就等于 0——溢出被静默丢弃1 11111111 100000000保留低 8 位正好是 00000000。这就是为什么补码能把减法统一成加法整个 ALU算术逻辑单元里只需要一套加法电路就能处理四则运算。如果你将来要接触底层汇编或硬件设计补码绝对是绕不开的重点即使是普通开发理解补码也能帮你一眼看出为什么有符号整数溢出的表现那么“诡异”。3. 字符编码的真相字母和汉字到底怎么变成数字存储3.1 ASCII 与字节从 7 位到 8 位的演进存储设备只能存数字那你平时打出的字母“A”、汉字“中”怎么存进去答案就是编码——给每个字符分配一个唯一编号写入时把字符变成编号读取时再把编号还原成字符。最早大规模普及的字符编码是 ASCII美国信息交换标准码。它用 7 个二进制位表示一个字符一共 128 个码位数字 0~9编码 48~57、大写字母 A~Z编码 65~90、小写字母 a~z编码 97~122以及标点符号和控制字符。后来为了凑成整字节实际存储时会在最高位补一个 0形成 0XXXXXXX 的 8 位格式。有个特别实用的规律值得记住大小写字母的 ASCII 码正好相差 32。比如大写 A 是 65二进制 01000001小写 a 是 97二进制 01100001区别就在第 6 位到底是 0 还是 1。所以很多编程语言里做大小写转换本质就是“按位翻转第 6 个二进制位”的操作。3.2 中文编码与乱码的根源编码和解码必须配对ASCII 只覆盖了英文字符中文显然不在其中。为了处理汉字中国大陆推出了 GB2312 和 GBK 系列编码每个汉字使用两个字节存储大约能覆盖几万个常用和生僻汉字。这套方案让中文存储进入实用阶段但也带来了一个严重问题世界上几十种文字、几十套编码方案彼此互不兼容。你用 GBK 存的文件拿到使用 Big5 繁体编码的系统里打开立刻变成天书。后来国际标准化组织推出了 Unicode 统一字符集目标是给全世界所有字符分配唯一编号。如今我们常用的 UTF-8就是 Unicode 的一种变长编码方案它用 1 到 4 个字节表达一个字符英文字符只要 1 字节兼容 ASCII绝大多数汉字用 3 字节生僻字用 4 字节。这种设计既保证了和旧世界的兼容又能覆盖几乎全人类的所有语言文字。我拿“中”字举个例子。在 GBK 编码里“中”的十六进制形式是 0xD6D0占用 2 字节在 UTF-8 里“中”被编码成 0xE4B8AD占用 3 字节。同样是这个汉字在不同编码体系下变成的字节内容完全不同所以一旦编码和解码规则不匹配乱码几乎是必然的。这也解释了为什么你从某个旧系统导出的 CSV 文件用 Excel 打开时经常出现“锟斤拷”、“烫烫烫”这类奇怪字符旧文件是用 GBK 编码的而 Excel 默认按 UTF-8 解码字节流被错误切分和映射就产生了这种让初学者摸不着头脑的乱码。对付乱码的唯一办法就是弄清源文件的真实编码然后手动指定正确的解码方式。很多编辑器在打开文件时都支持“重新打开并选择编码”这就是你的第一手段。3.3 BOM 与编码声明一个永远别忽略的小细节UTF-8 文件里经常藏着三个看不见的字节EF BB BF叫 BOM字节顺序标记。它本身不是一个可打印字符而是用来标记“这个文件是 UTF-8 编码”的元数据。大部分现代编辑器都能正确处理 BOM但有些老旧的解析程序会把 BOM 当成一个真正的字符读进去导致文件开头凭空多出一个“看不见的字符”引发解析错误。我在实际项目中就遇到过不止一次某配置文件明明看起来没问题程序却报错找不到配置项调试了半天才发现是 BOM 在作怪。这类问题非常隐蔽因为 BOM 不显示、不报错只有在十六进制视图里才能现形。如果你的程序对配置内容做了严格的字符串匹配建议处理文件时先做 BOM 剥离或者统一约定“不使用 BOM”保存。4. 存储单位与容量迷思bit、Byte、KB、KiB 的换算雷区4.1 bit 和 Byte 一字之差天壤之别很多新手第一个踩的雷就是分不清 bit 和 Byte。bit比特是二进制的一位是信息论层面的最小单位Byte字节是 8 个 bit 的组合是存储系统中最常见的计量单位。两者缩写只差一个字母但大小差了 8 倍。这个雷偏偏在网络领域埋得最深宽带运营商宣传的 100M、300M、1000M单位是 Mbps也就是兆比特每秒而下载工具里显示的 MB/s是兆字节每秒。两者换算要除以 8。所以 100Mbps 宽带的理论峰值下载速度是 100 ÷ 8 12.5MB/s。注意这是理论峰值实际还会受运营商线路损耗、Wi-Fi 信号衰减、对端服务器出口带宽等因素影响跑到八九成已经很不错了。遇到有人声称“100M 宽带下载能跑满 100MB/s”你基本可以断定他没搞清单位。4.2 为什么 64GB 的 U 盘电脑显示只有 59.6GB存储容量的“缩水”问题可以说是数字转换与存储基础里最容易让人困惑的点。根源就在于硬盘制造商和操作系统用了两套不同的换算标准。硬盘厂商遵循国际单位制1GB 1000MB 1,000,000,000B全部按十进制计算。而操作系统的文件系统普遍按二进制习惯1GiB 1024MiB 1,073,741,824B虽然界面标签上可能写着 GB实际却是 GiB 的换算方式。两者差距约 2.4%也就是 64GB 除以 1.073741824 后得到约 59.6GB。为了让这个问题得到术语上的规范国际电工委员会IEC推出了 GiB、MiB、KiB 这套二进制前缀命名和十进制前缀 GB、MB、KB 做了明确区分。但 Windows 这类系统仍然沿用老标签直接显示“GB”导致误会持续至今。如果你在 Linux 终端里用 df -h 查看容量通常能看到更精确的区分部分发行版还能用 --si 参数切换到十进制显示。这里有一个很实用的换算公式帮你快速判断实际容量标称容量GB除以 1.073741824就得到系统显示的十进制 GiB 值。标称 500GB 的机械硬盘500 ÷ 1.0737 ≈ 465.7GB是不是和你电脑上看到的一模一样4.3 内存带宽速算时钟频率、位宽与字节的三角关系存储单位不仅用于容量也用于数据传输速率。内存带宽是电脑性能的重要指标它的计算公式是带宽byte/s 时钟频率Hz× 每次传输 bit 数 ÷ 8以单条 DDR4-3200 内存为例它的时钟频率虽然物理上是 1600MHz但因为 DDR 技术在一个时钟周期内上下沿都传输数据等效频率变为 3200MT/s。每次传输 64 bit 数据除以 8 变成字节计算可得3200 × 64 ÷ 8 25600 MB/s也就是 25.6GB/s这就是 DDR4-3200 单通道内存的理论带宽。双通道叠加后是 51.2GB/s正好解释了为什么游戏玩家常说“双通道内存带宽翻倍”。这里也提醒一个容易犯的错误内存带宽的 GB/s 是二进制换算的 GiB/s还是十进制换算的 GB/s不同厂商标注并不统一实际性能测试软件显示的数字可能和纸面计算略有出入这不是硬件坏了只是换算口径不同。4.4 文件系统元数据与格式化损耗最后补一个很少被提起但真实存在的损耗来源格式化本身会吃掉一部分容量。文件系统需要建立索引结构比如 NTFS 的 MFT主文件表、FAT32 的 FAT 表、exFAT 的目录区这些元数据也要占用实际扇区。所以一个新的 64GB U 盘即使按二进制换算成 59.6GiB格式化完成后可用空间还会进一步减少到 58.xGiB。有些同学看到这个现象以为是买到缩水盘实际上这是文件系统的正常开销。检查闪存盘是否缩水有一个更靠谱的方法直接看闪存盘的物理 ID再用芯片检测工具读取实际闪存颗粒容量而不是看分区格式化后的剩余空间。当然对绝大多数用户来说标称 64GB 显示约 58GB已经是健康范围内的正常表现不必过分焦虑。5. 动手验证自己就能做的几个数字存储小实验5.1 用系统内置计算器感受进制切换接下来的内容不需要任何专业设备打开你电脑自带的计算器就能做。Windows 计算器切换到“程序员”模式后你可以直接在十进制、十六进制、二进制之间切换输入。我建议你现在就试一下输入一个十进制数 255切换到十六进制看到 FF再切到二进制看到 11111111。这个瞬间的视觉冲击比背十遍转换表都管用。再试一个输入 2023先转到十六进制看看 7E7再转到二进制看看 11111100111。你会在实际操作中理解“原来一个看起来很大的数字在十六进制里只是短短三位”。这种直观印象回补理论知识时非常宝贵。如果你有编程环境也可以一行代码验证# 十进制转二进制、八进制、十六进制 print(bin(2023)) print(oct(2023)) print(hex(2023))输出会分别是 0b11111100111、0o3747、0x7e7。注意输出里带着 0b、0o、0x 前缀这是编程语言里表示不同进制的约定写法。5.2 用文本编辑器验证字符编码细节字符编码的验证也很简单。新建一个文本文件输入“中”字分别用 UTF-8 和 GBK 编码保存。然后用十六进制查看工具比如 VS Code 的 Hex Editor 插件或命令行下的 xxd打开这两个文件UTF-8 编码的“中”是三个字节E4 B8 ADGBK 编码的“中”是两个字节D6 D0看到实际字节内容后你才会真正明白为什么同样一个字在不同编码下占用空间不同也为之后理解乱码为什么会发生打下了最直观的基础。推荐你自己动手把这个实验做一遍效果比看十篇文章都好。我在实际带新人时经常遇到有人把“编码”和“加密”混为一谈。编码是可逆的映射规则编码表是公开的目的只是让字符变成字节方便存储和传输加密则涉及秘钥和不可逆保护。字符编码解决的是“怎么存”加密解决的是“怎么不让别人看懂”两者是不同层面的问题。通过这几个小实验你会发现数字转换和计算机存储基础并不是只能躺在课本里的抽象概念而是每个开发者都会真实碰到的底层知识。这套基础一旦建立起来再去看内存分析、文件格式解析、网络协议抓包这类进阶内容你会觉得顺滑得多因为绕来绕去底层无非都是二进制和字节的游戏。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询