数字电路码制详解

数字电路码制详解:从原码到BCD码的完整指南


前言

在数字电路中,我们不仅要解决"用什么进制"的问题,还要解决"如何编码"的问题。

进制解决的是计数规则 (逢几进一),而码制解决的是表示规则(用哪些二进制位表示什么含义)。

本文将系统讲解数字电路中常用的各种码制,包括原码、反码、补码、BCD码、格雷码等,帮助你彻底搞清楚这些概念。


目录


码制与进制的区别

核心区分

概念 解决的问题 例子
进制 逢几进一?计数规则是什么? 二进制、八进制、十进制、十六进制
码制 用什么编码表示?含义是什么? 原码、反码、补码、BCD码、格雷码

举例说明

同样是二进制数 1010

  • 作为无符号二进制数:表示十进制 10
  • 作为4位原码:表示十进制 -2(最高位为符号位)
  • 作为8421BCD码:表示十进制 10
  • 作为格雷码:表示十进制 11

同一个二进制位组合,不同码制下含义完全不同!


机器数与真值

定义

术语 定义 例子
真值 实际的数值(带正负号) +5、-3、+127
机器数 计算机中存储的二进制表示 0101、1101、01111111

关键点

  • 机器数是二进制形式 ,真值是实际含义
  • 机器数的最高位 通常作为符号位
    • 0 表示正数
    • 1 表示负数
  • 其余位表示数值位

示例(8位机器数)

机器数 符号位 数值位 真值(原码解释)
0000 0101 0 000 0101 +5
1000 0101 1 000 0101 -5
0111 1111 0 111 1111 +127
1111 1111 1 111 1111 -127

原码、反码、补码

这是计算机中表示有符号整数的三种编码方式。

一、原码(Sign-Magnitude)

定义:符号位 + 绝对值的二进制表示

规则

  • 正数:符号位为0,数值位为该数的二进制
  • 负数:符号位为1,数值位为该数绝对值的二进制

示例(8位)

真值 原码
+5 0000 0101
-5 1000 0101
+0 0000 0000
-0 1000 0000

原码的问题

  1. 零有两种表示:+0 和 -0
  2. 运算复杂:加减法需要判断符号,硬件实现麻烦

二、反码(Ones' Complement)

定义:正数同原码,负数为原码数值位按位取反

规则

  • 正数:与原码相同
  • 负数:符号位为1,数值位为原码数值位按位取反

示例(8位)

真值 原码 反码
+5 0000 0101 0000 0101
-5 1000 0101 1111 1010
+0 0000 0000 0000 0000
-0 1000 0000 1111 1111

反码的问题

  1. 零仍然有两种表示
  2. 运算时需要循环进位

三、补码(Two's Complement)⭐ 最重要

定义:正数同原码,负数为反码加1

规则

  • 正数:与原码相同
  • 负数:反码 + 1,或等价地,原码数值位取反后加1

示例(8位)

真值 原码 反码 补码
+5 0000 0101 0000 0101 0000 0101
-5 1000 0101 1111 1010 1111 1011
+0 0000 0000 0000 0000 0000 0000
-0 1000 0000 1111 1111 0000 0000
-128 --- --- 1000 0000

补码的优点

  1. 零只有一种表示
  2. 加减法统一:减法变成加负数
  3. 符号位参与运算:不需要单独处理

补码的快速求法

负数补码的简便求法

从右向左,第一个1及其右边保持不变,左边按位取反。

示例:求 -5 的8位补码

复制代码
+5 的原码:0000 0101
从右向左找第一个1:0000 0101
                     ↑
该位及右边不变,左边取反:1111 1011

为什么计算机用补码

核心原因

  1. 统一加减法运算

减法可以转化为加法:

复制代码
5 - 3 = 5 + (-3)

在补码系统中:

复制代码
  0000 0101  (+5)
+ 1111 1101  (-3)
-----------
  0000 0010  (+2)  ← 结果正确!
  1. 零的唯一表示

补码中,零只有一种表示(0000 0000),避免了原码和反码的"正零负零"问题。

  1. 扩大表示范围

n位补码的表示范围:

  • 原码/反码:-(2^(n-1) - 1) 到 +(2^(n-1) - 1)
  • 补码:-2^(n-1) 到 +(2^(n-1) - 1)

例如8位:

  • 原码/反码:-127 到 +127
  • 衡码:-128 到 +127(多表示一个 -128)

BCD码(二-十进制编码)

什么是BCD码?

BCD码用4位二进制 表示1位十进制数字。

常用BCD码类型

1. 8421BCD码(最常用)
十进制 8421BCD 权值解释
0 0000 0×8+0×4+0×2+0×1
1 0001 0×8+0×4+0×2+1×1
2 0010 0×8+0×4+1×2+0×1
3 0011 0×8+0×4+1×2+1×1
4 0100 0×8+1×4+0×2+0×1
5 0101 0×8+1×4+0×2+1×1
6 0110 0×8+1×4+1×2+0×1
7 0111 0×8+1×4+1×2+1×1
8 1000 1×8+0×4+0×2+0×1
9 1001 1×8+0×4+0×2+1×1

注意 :1010~1111 这6种组合在8421BCD中是非法码

2. 5421BCD码
十进制 5421BCD
0 0000
1 0001
2 0010
3 0011
4 0100
5 1000
6 1001
7 1010
8 1011
9 1100
3. 2421BCD码
十进制 2421BCD
0 0000
1 0001
2 0010
3 0011
4 0100
5 1011
6 1100
7 1101
8 1110
9 1111

BCD码的应用

  • 数字显示(数码管)
  • 金融计算(避免浮点误差)
  • 十进制运算电路

格雷码

什么是格雷码?

格雷码是一种相邻两个码只有一位不同的编码方式。

4位格雷码表

十进制 二进制 格雷码
0 0000 0000
1 0001 0001
2 0010 0011
3 0011 0010
4 0100 0110
5 0101 0111
6 0110 0101
7 0111 0100
8 1000 1100
9 1001 1101
10 1010 1111
11 1011 1110
12 1100 1010
13 1101 1011
14 1110 1001
15 1111 1000

格雷码的特点

  1. 相邻性:任意相邻两个格雷码只有一位不同
  2. 循环性:首尾格雷码也只有一位不同
  3. 反射性:具有镜像对称结构

二进制转格雷码

G i = B i ⊕ B i + 1 G_i = B_i \oplus B_{i+1} Gi=Bi⊕Bi+1

即:格雷码的第i位 = 二进制码的第i位 异或 二进制码的第i+1位

示例:二进制 1011 → 格雷码?

复制代码
B3 B2 B1 B0 = 1  0  1  1
G3 G2 G1 G0 = 1⊕0  0⊕1  1⊕1  1
           = 1    1    0    1

答案:1101

格雷码的应用

  • 编码器(避免跳变误差)
  • 位置传感器
  • 模数转换

奇偶校验码

原理

在数据位后增加一位校验位,使整个码中"1"的个数为奇数或偶数。

奇校验 vs 偶校验

类型 规则
奇校验 数据位 + 校验位 中"1"的个数为奇数
偶校验 数据位 + 校验位 中"1"的个数为偶数

示例

数据 1的个数 奇校验位 偶校验位
1010 2(偶) 1 0
1011 3(奇) 0 1
1100 2(偶) 1 0

局限性

  • 只能检测奇数个错误
  • 不能纠错
  • 不能检测偶数个错误

码制对照表

常用编码对照(十进制 0~9)

十进制 二进制 8421BCD 格雷码 奇校验码
0 0000 0000 0000 00001
1 0001 0001 0001 00010
2 0010 0010 0011 00101
3 0011 0011 0010 00110
4 0100 0100 0110 01001
5 0101 0101 0111 01010
6 0110 0110 0101 01100
7 0111 0111 0100 01111
8 1000 1000 1100 10001
9 1001 1001 1101 10010

典型例题

例题一:求补码

求十进制数 -37 的8位补码。

【解】

第一步:求 +37 的原码

+37 = 32 + 4 + 1 = 0010 0101

第二步:求反码(数值位取反)

0010 0101 → 1101 1010

第三步:求补码(反码 + 1)

1101 1010 + 1 = 1101 1011

【答案】:1101 1011


例题二:补码转真值

已知8位补码为 1110 0110,求其真值。

【解】

第一步:判断符号位

最高位为1,是负数

第二步:求原码

补码 → 反码(减1):1110 0110 - 1 = 1110 0101

反码 → 原码(数值位取反):1110 0101 → 1001 1010

第三步:求真值

原码数值位:001 1010 = 32 + 8 + 2 = 26

符号位为1,所以真值为 -26

【答案】:-26


例题三:8421BCD码转换

将十进制数 59 转换为8421BCD码。

【解】

5 → 0101

9 → 1001

【答案】:0101 1001


总结与记忆口诀

核心概念速记

码制 核心特点
原码 符号位 + 绝对值,零有两种表示
反码 正同原,负取反,零有两种表示
补码 正同原,负取反加一,零唯一,计算机必用
BCD码 4位二进制表示1位十进制
格雷码 相邻只有一位不同
奇偶校验 增加1位使"1"的个数为奇/偶

补码求法口诀

正数补码同原码,负数反码加个一
快速求法看右边,第一个1左边翻

BCD码口诀

8421权值要记牢,四位二进表十进
1010以后非法码,只有零到九有效

格雷码口诀

相邻只变一位数,二进异或得格雷


相关推荐
深圳帝王星科技9 小时前
SE8408 Sync Buck 100V 30A
其他
北京海得康12 小时前
瑞拉可兰 (Relacorilant) 不良反应、安全警戒要点与临床安全
其他
智慧大脑搬运工17 小时前
环保绩效A级B级评定标准与绿色制造准入机制研究——基于山东省2025—2026年政策框架分析
其他
cellurw19 小时前
20260803 LA Vendor与CDSP修复及BP模块实测
其他
2601_962101832 天前
广告灯箱导光板材料对比:PMMA vs PC vs PETG,亮欣如何用光学级PMMA实现高亮低故障?
其他
执欣之手3 天前
Hullnky Taper
其他
邵老师讲教育3 天前
2026实测:6大宁波数学小升初机构横向对比
其他
2601_962101833 天前
侧挂灯箱常见光衰眩光问题诊断:亮欣技术优化方案与效果验证
其他
EFD8888883 天前
中央糕点烘焙冷却车间通风选型,易互德耐湿热布风管保障糕点成品品相
其他
LIU_baoxue4 天前
成都理工大学校园生活全维度解析:学习、活动与生活设施综合报告
其他