前言
- 数制和码制是学习数电和C语言的基础,建议大家好好理解一下,但是也不是特别重要,主要是了解一下进制的构成和运算,能够看懂是多少进制,运算比较重要,可以多看几遍。
- 推荐专栏数字电子技术基础(持续更新中)。
- 习题来源:阎石.数字电子技术基础(第六版)
- 需要教材答案电子版私信我。
- 数制及不同数制的转换请看数制讲解。
- 欢迎评论区留言你所遇见的问题,也可以给博主留下建议。
- 如果您觉得有用,分享让更多的人看看吧!
1.几种常用的编码
为了用二进制代码表示十进制数的0~9这十个状态,二进制代码至少应当有4位。4位二进制代码一共有十六个(0000~1111),取其中哪十个以及如何与0~9相对应,有许多种方案。
下表是几种常见的十进制代码:
编码 种类 十进 制数 | 8421码 (BCD码) | 余3码 | 2421码 | 5211码 | 2421码 |
0 | 0000 | 0011 | 0000 | 0000 | 0010 |
1 | 0001 | 0100 | 0001 | 0001 | 0110 |
2 | 0010 | 0101 | 0010 | 0100 | 0111 |
3 | 0011 | 0110 | 0011 | 0101 | 0101 |
4 | 0100 | 0111 | 0100 | 0111 | 0100 |
5 | 0101 | 1000 | 1011 | 1000 | 1100 |
6 | 0110 | 1001 | 1100 | 1001 | 1101 |
7 | 0111 | 1010 | 1101 | 1100 | 1111 |
8 | 1000 | 1011 | 1110 | 1101 | 1110 |
9 | 1001 | 1100 | 1111 | 1111 | 1010 |
权 | 8421 | 2421 | 5211 |
这里用来表示一个数的时候,都是每位数用相应的编码表示,比如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=×2+
×4+
×2+
×1,比如D=0时,
=
=
=
=0,排序后就是0000;再比如D=3时,
=0,
=0,
=1,
=1,然后排序后就是0011……也就是说可以凑数字来满足这个十进制数。
这时候就不太清楚应该选用那个来凑,所以2421码我们将它分为两半,只记0~4用D=×2+
×4+
×2+
×1公式来凑数字,高位一直保持0,然后后一半就只要对照着取反就好了。所以记不住2421码每个十进制数的编码,就可以这么记。编码时也是需要将每位分开进行编码。
5.5211码
是一种恒权代码,通过观察表,我们可以发现,5211码其实就是D=×5+
×2+
×1+
×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)就好了。
给我点个赞,再给你个大拇指,你真是个好人!