常用的码制,你都知道嘛?

本文介绍了数制和不同编码方式的基础知识,如8421码(BCD码)、余3码、2421码、5211码等,强调了它们在数字电子技术和编程中的应用,以及如何记忆和转换这些编码。还提到了ASCII码和格雷码的基本概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言


  • 数制和码制是学习数电和C语言的基础,建议大家好好理解一下,但是也不是特别重要,主要是了解一下进制的构成和运算,能够看懂是多少进制,运算比较重要,可以多看几遍。
  • 推荐专栏数字电子技术基础(持续更新中)。
  • 习题来源:阎石.数字电子技术基础(第六版)
  • 需要教材答案电子版私信我。
  • 数制及不同数制的转换请看数制讲解。
  • 欢迎评论区留言你所遇见的问题,也可以给博主留下建议。
  • 如果您觉得有用,分享让更多的人看看吧!

1.几种常用的编码

为了用二进制代码表示十进制数的0~9这十个状态,二进制代码至少应当有4位。4位二进制代码一共有十六个(0000~1111),取其中哪十个以及如何与0~9相对应,有许多种方案。

下表是几种常见的十进制代码:

               编码

               种类

十进

制数

8421码

(BCD码)

余3码2421码5211码2421码
000000011000000000010
100010100000100010110
200100101001001000111
300110110001101010101
401000111010001110100
501011000101110001100
601101001110010011101
701111010110111001111
810001011111011011110
910011100111111111010
842124215211

这里用来表示一个数的时候,都是每位数用相应的编码表示,比如123用8421码表示,应为

0001 0010 0011,用余三码表示为0100 0101 0110……

2.8421码

也叫做BCD码,它转换为十进制的规则就是二进制转换为十进制的规则一样,0~9数字表示是一样的,唯一的不同,就是十进制数字的每一位都要分开表示。如何记住呢?这里只要记住每位都分开转换为二进制。

3.余3码

余3码的编码规则与8421不同,如果把每个余3码看作4位二进制数,则它的编码要比它所表示的十进制数码多3,估将这种代码称为余3码。

如果将两个余3码相加,所得的和将比十进制数和所对应的二进制数多6.因此在用余3码做十进制加减运算时,若两数之和为10,正好等于二进制数的16,于是便从高位自动产生进位信号。

从表中也可以发现,0和9、1和8、2和7、3和6、4和5的余3码互为反码,这对于求取对10的补码很是方便。

这里简单介绍下反码,详细请看数制的运算(内含原反补码的求法)。

反码就是原码的每一位都取相反数(也就是0取1,1取0),比如0011是原码时,其反码就是1100,再比如0100是原码时,1011是反码(这里说的是正数)。

通过观察,我们可以发现,余3码其实也就是开始数字0的编码比初始编码0000多了3,也就是它相当于从十进制数3开始编码的,但是比十进制用二进制编码要慢了3,所以叫余3码。编码时也是需要将每位分开进行编码。需要注意的是余3码不是恒权码

4.2421码

是一种恒权代码,它的0和9、1和8、2和7、3和6、4和5互为反码,这个特点和余3码相仿。

通过观察表,我们可以发现,2421码其实就是D=k_{3}×2+k_{2}×4+k_{1}×2+k_{0}×1,比如D=0时,k_{3}=k_{2}=k_{1}=k_{0}=0,排序后就是0000;再比如D=3时,k_{3}=0,k_{2}=0,k_{1}=1,k_{0}=1,然后排序后就是0011……也就是说可以凑数字来满足这个十进制数。

这时候就不太清楚应该选用那个来凑,所以2421码我们将它分为两半,只记0~4用D=k_{3}×2+k_{2}×4+k_{1}×2+k_{0}×1公式来凑数字,高位一直保持0,然后后一半就只要对照着取反就好了。所以记不住2421码每个十进制数的编码,就可以这么记。编码时也是需要将每位分开进行编码。

5.5211码

是一种恒权代码,通过观察表,我们可以发现,5211码其实就是D=k_{3}×5+k_{2}×2+k_{1}×1+k_{0}×1,同样发现这里面有两个数字1,这里就记住用最低位的凑,但是需要记住的是,凑数字的时候,如果用2能够满足,就用2,而不用两个1来凑

 6.余3循环码

它是一种变权码,每一位的1在不同的代码中并不代表固定的数值。

主要特点是相邻的两个代码之间的仅有一位的状态不同

其实余3循环码就是格雷码中对应的十进制为3(3为起始位置,也就是余3循环码对应的0)时取10个连续数的所对应的连续代码。格雷码时详细讲。

7.格雷码

也称循环码,它的构造方法如下:

按照这个方法,我们还可以构造更多的格雷码……

细心的你应该能发现

所以记住格雷码也就记住了余3循环码,余3循环码就是比4位格雷码慢了3个。

8.ASCII码

ASCII码是美国信息交换标准代码。

ASCII码是一组7位二进制代码(b7b6b5b4b3b2b1),共128个,其中包括表示0~9的十个代码,表示大小写英文字母的52个代码,32个表示各种符号的代码以及34个控制码。具体如下表。

 

我们只需要记住NULL,0~9,26字母的大小写。

NULL就是0,0~9只需要记住48,大写字母只需要记住A为65,其他大写字母往后数就好了,小写字母只需要记住a的序号是大写A的序号加32(97)就好了。

给我点个赞,再给你个大拇指,你真是个好人!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值