数字电子电路(二)
第一章 概述
第二章 数制与码制
第三章 逻辑代数
第四章 组合逻辑电路
第五章 触发器
第六章 时序逻辑电路
文章目录
一、数制
1、几种常用的数制
多位任意进制(N进制)数展开式的普遍形式为D=ΣkiNi。
N称为计数的基数,ki为第i位的系数,Ni称为第i位的权。
1)十进制(Decimal number)
逢十进一
,用D/d或10脚注表示,例:(10)D=1x101+0x100。
2)二进制(Binary number)
逢二进一
,用B/b或者2脚注表示,例:(101.11)2=1x22+0x21+1x20+1x2-1+1x2-2=(5.75)10。
3)八进制(Octal number)
逢八进一
,用O/o或者8脚注表示,例:(12.4)8=1x81+2x80+4x8-1=(10.5)10。
4)十六进制(Hexadecimal number)
逢十六进一
,用H/h或者16脚注表示,例:(2A.7F)16=2x161+10x160+7x16-1+15x16-2。
不同进制数的对照表
十进制(Decimal) | 二进制(Binary) | 八进制(Octal) | 十六进制(Hexadecimal) |
---|---|---|---|
00 | 0000 | 00 | 0 |
01 | 0001 | 01 | 1 |
02 | 0010 | 02 | 2 |
03 | 0011 | 03 | 3 |
04 | 0100 | 04 | 4 |
05 | 0101 | 05 | 5 |
06 | 0110 | 06 | 6 |
07 | 0111 | 07 | 7 |
08 | 1000 | 10 | 8 |
09 | 1001 | 11 | 9 |
10 | 1010 | 12 | A |
11 | 1011 | 13 | B |
12 | 1100 | 14 | C |
13 | 1101 | 15 | D |
14 | 1110 | 16 | E |
15 | 1111 | 17 | F |
2、不同数制间的转换
1)N进制转换为十进制
方法一:公式法
按权对位,展开相加
(N)R=an-1Rn-1+an-2Rn-2+……a2R2+a1R1+a0R0+a-1R-1+a-2R-2+……a-mR-m
∑
i
=
−
m
n
−
1
=
a
i
R
i
\boxed{\sum_{i=-m}^{n-1} = a_iR^i}
i=−m∑n−1=aiRi
方法二:(针对二进制)
例:(0110101101)B
=(0(512) 1(256)1(128)0(64)1(32)0(16)1(8)1(4)0(2)1(1))B
=(256+128+32+8+4+1)D
=(429)D
2的n次方表
n-1 | 2n |
---|---|
0 | 1 |
1 | 2 |
2 | 4 |
3 | 8 |
4 | 16 |
5 | 32 |
6 | 64 |
7 | 128 |
8 | 256 |
9 | 512 |
10 | 1024 |
11 | 2048 |
12 | 4096 |
13 | 8192 |
14 | 16384 |
15 | 32768 |
16 | 65536 |
… | … |
方法三:(针对八及十六进制)
借助二进制
例:(653)O=(110 101 011)B=(256 128 64 32 16 8 4 2 1) =(256+128+32+8+2+1)D=(427)D
例:(3A)H=(0011 1010)B =(128 64 32 16 8 4 2 1)=(32+16+8+2)D=(58)D
2)十进制转换为N进制
十进制转换为二进制
①凑数法(利用常用二进制数,使其和相等)
例:(61)D=(32+16+8+4+1)=(111101)B 64<61<32,则其为6位
(106)D=(64+32+8+2)=(1101010)B 128<106<64,则其为7位
②计算法
整数部分:除以二
后取其余数
,由下至上
排列
注:除到1为止
例:
(
45
)
D
=
{
45
/
2
=
22
⋯
⋯
1
22
/
2
=
11
⋯
⋯
0
11
/
2
=
5
⋯
⋯
1
5
/
2
=
2
⋯
⋯
1
2
/
2
=
1
⋯
⋯
0
1
⋯
⋯
1
(
45
)
D
=
(
101101
)
B
\tt{例:}(45)_D=\begin{cases} 45/2=22 & \cdots\cdots\boxed{1}\\ 22/2=11 & \cdots\cdots\boxed{0}\\ 11/2=5 & \cdots\cdots\boxed{1}\\ 5/2=2 & \cdots\cdots\boxed{1}\\ 2/2=1 & \cdots\cdots\boxed{0}\\ 1 & \cdots\cdots\boxed{1} \end{cases}\\ (45)_D=(101101)_B
例:(45)D=⎩
⎨
⎧45/2=2222/2=1111/2=55/2=22/2=11⋯⋯1⋯⋯0⋯⋯1⋯⋯1⋯⋯0⋯⋯1(45)D=(101101)B
( 114 ) D = { 114 / 2 = 57 ⋯ ⋯ 0 57 / 2 = 28 ⋯ ⋯ 1 28 / 2 = 14 ⋯ ⋯ 0 14 / 2 = 7 ⋯ ⋯ 0 7 / 2 = 3 ⋯ ⋯ 1 3 / 2 = 1 ⋯ ⋯ 1 1 ⋯ ⋯ 1 ( 114 ) D = ( 1110010 ) B (114)_D=\begin{cases} 114/2=57 & \cdots\cdots\boxed{0}\\ 57/2=28 & \cdots\cdots\boxed{1}\\ 28/2=14 & \cdots\cdots\boxed{0}\\ 14/2=7 & \cdots\cdots\boxed{0}\\ 7/2=3 & \cdots\cdots\boxed{1}\\ 3/2=1 & \cdots\cdots\boxed{1}\\ 1 & \cdots\cdots\boxed{1} \end{cases}\\ (114)_D=(1110010)_B (114)D=⎩ ⎨ ⎧114/2=5757/2=2828/2=1414/2=77/2=33/2=11⋯⋯0⋯⋯1⋯⋯0⋯⋯0⋯⋯1⋯⋯1⋯⋯1(114)D=(1110010)B
小数部分:乘二
后取其整数位
,由上至下
排列
注:乘至小数点后为0为止
例:
(
0.75
)
D
=
{
0.75
∗
2
=
1
.
50
0.50
∗
2
=
1
.
00
(
0.75
)
D
=
(
0.11
)
B
\tt{例:}(0.75)_D = \begin{cases} 0.75 &*& 2 &=& \boxed{1}.50\\ 0.50 &*& 2 &=& \boxed{1}.00 \end{cases}\\ (0.75)_D=(0.11)_B\\
例:(0.75)D={0.750.50∗∗22==1.501.00(0.75)D=(0.11)B
( 0.59375 ) D = { 0.59375 ∗ 2 = 1 . 18750 0.18750 ∗ 2 = 0 . 375 0.375 ∗ 2 = 0 . 75 0.75 ∗ 2 = 1 . 5 0.5 ∗ 2 = 1 . 00 ( 0.59375 ) D = ( 0.10011 ) B (0.59375)_D = \begin{cases} 0.59375 &*& 2 &=& \boxed{1}.18750\\ 0.18750 &*& 2 &=& \boxed{0}.375\\ 0.375 &*& 2 &=& \boxed{0}.75\\ 0.75 &*& 2 &=& \boxed{1}.5\\ 0.5 &*& 2 &=& \boxed{1}.00\\ \end{cases}\\ (0.59375)_D=(0.10011)_B (0.59375)D=⎩ ⎨ ⎧0.593750.187500.3750.750.5∗∗∗∗∗22222=====1.187500.3750.751.51.00(0.59375)D=(0.10011)B
十进制转换为八(十六进制)
①方法一:先转换成二进制,借助二进制与十六(八)进制的关系
每三位二进制数可以表示一位八进制数,每四位二进制数可以表示一位十六进制数
②方法二:计算法
整数部分:除以8(16)取其余数,由下至上排列
小数部分:乘8(16)取其整数位,由上至下排列
例:(34.125)D=(32+2+0.125)=(100010.001)B=(42.1)O=(22.2)H
3) 二-八(十六)进制之间的转换
8 = 2 3 8i=23i
注:每三位二进制数可以表示一位八进制数
16=24 16i=24i
注:每四位二进制数可以表示一位十六进制数
二、编码
用若干位二进制数码按一定规律排列
起来表示给定信息
的过程称为编码。
1、BCD码
BCD(Binary Coded Decimal)码:用4位
二进制表示一位十进制
为什么是四位?
十进制的系数有10个,即0-9,要用二进制表示0-9这十个数码,即待编码的信息有10项,编码事件(或信息)的个数位M,则需要使用的二进制代码的位数n,则要满足:
(
2
n
−
1
)
<
M
≤
2
n
(2^{n-1})<M\leq2^n
(2n−1)<M≤2n
代入可得:n = 4
B
C
D
码
{
8421
B
C
D
码
5421
B
C
D
码
2421
B
C
D
码
余
3
码
BCD码\begin{cases} &8421 & BCD码\\ &5421 & BCD码\\ &2421 & BCD码\\ &&余3码 \end{cases}
BCD码⎩
⎨
⎧842154212421BCD码BCD码BCD码余3码
-
8421 BCD码:
8 x a3 + 4 x a2 + 2 x a1 + 1 x a0
例:(5)D = (0101)8421 BCD码
-
5421 BCD码:
5 x a3 + 4 x a2 + 2 x a1 + 1 x a0
-
余3码:
8421 BCD码+011
十进制 | 8421 | 5421 |
---|---|---|
0 | 0000 | 0000 |
1 | 0001 | 0001 |
7 | 0111 | 1010 |
9 | 1001 | 1100 |
明码
:编码形式唯一
有权值码
:8421码、5421码、2421码
注:有权值码不一定是明码
十进制数 | 8421 BCD | 5421 BCD | 2421 BCD* | 余三码 |
---|---|---|---|---|
0 | 0000 | 0000 | 0000 | 0011 |
1 | 0001 | 0001 | 0001 | 0100 |
2 | 0010 | 0010 | 0010 | 0101 |
3 | 0011 | 0011 | 0011 | 0110 |
4 | 0100 | 0100 | 0100 | 0111 |
5 | 0101 | 1000 | 1011 | 1000 |
6 | 0110 | 1001 | 1100 | 1001 |
7 | 0111 | 1010 | 1101 | 1010 |
8 | 1000 | 1011 | 1110 | 1011 |
9 | 1001 | 1100 | 1111 | 1100 |
unused | 1010 | 0101 | 0101 | 0000 |
unused | 1011 | 0110 | 0110 | 0001 |
unused | 1100 | 0111 | 0111 | 0010 |
unused | 1101 | 1101 | 1000 | 1101 |
unused | 1110 | 1110 | 1001 | 1110 |
unused | 1111 | 1111 | 1010 | 1111 |
2、格雷码
格雷码也被称为循环
码
编码特点:对称轴两边最高位
对称取反
,其余低位对称相等。
一位格雷码
十进制 | 格雷码 |
---|---|
0 | 0 |
1 | 1 |
两位格雷码
十进制 | 格雷码 |
---|---|
0 | 0 0 |
1 | 0 1 |
2 | 1 1 |
3 | 1 0 |
四位格雷码
特点:相邻
两个码组之间只有一位不同
;相邻两个码又称为单位距离码
。
可靠性
:当连续发送两个相邻码组时,因为只有一位不同,出错的可能性降低。
十进制数 | B3B2B1B0 | G3G2G1G0 |
---|---|---|
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 |
3、奇偶校验码
结构:信息位
+测试位
奇校验码
信息位与测试位中,1的个数
之和为奇数
信息位(例:8421 BCD码) | 测试位 |
---|---|
0000 | 1 |
0001 | 0 |
0010 | 0 |
0011 | 1 |
0100 | 0 |
0101 | 1 |
0110 | 1 |
0111 | 0 |
1000 | 0 |
1001 | 1 |
偶校验码
信息位与测试为中1的个数
之和位偶数
信息位(例:8421 BCD码) | 测试位 |
---|---|
0000 | 0 |
0001 | 1 |
0010 | 1 |
0011 | 0 |
0100 | 1 |
0101 | 0 |
0110 | 0 |
0111 | 1 |
1000 | 1 |
1001 | 0 |
奇/偶编码的可靠性
-
在未加奇/偶测试位前,码组中某一位出错的概率是1/2=50%
例如:8421BCD码1001变成1000或0001,不会发现错误
-
加奇/偶测试位后,码组中某一位出错时,奇/偶会发生改变
例如:奇8421BCD码10011变成10001或00011,能发现错误
-
但当两位同时出错时,原来的奇/偶性可能不发生改变
例如:奇8421码01011变成10011或01000,不能发现错误
可靠性编码
可靠性编码
{
减少代码产生错误的可能
⋯
⋯
格雷码(避免出错)
检测出信息在传输中奇数个代码出错
⋯
⋯
奇偶校验码(检错)
可靠性编码\begin{cases} 减少代码产生错误的可能&\cdots\cdots&格雷码(避免出错)\\ 检测出信息在传输中奇数个代码出错&\cdots\cdots&奇偶校验码(检错) \end{cases}
可靠性编码{减少代码产生错误的可能检测出信息在传输中奇数个代码出错⋯⋯⋯⋯格雷码(避免出错)奇偶校验码(检错)
总结
格雷码
{
格雷码不是有权值码
任何相邻码元组合之间,包括首尾两个码组之间仅有一位码元不同
格雷码顺序发生变化时,每一次转换只有一位码元改变
格雷码\begin{cases} 格雷码不是有权值码\\ 任何相邻码元组合之间,包括首尾两个码组之间仅有一位码元不同\\ 格雷码顺序发生变化时,每一次转换只有一位码元改变 \end{cases}
格雷码⎩
⎨
⎧格雷码不是有权值码任何相邻码元组合之间,包括首尾两个码组之间仅有一位码元不同格雷码顺序发生变化时,每一次转换只有一位码元改变
奇偶校验码 { 奇偶校验码只能检一位错,且不能纠错 奇偶校验码分为奇校验码和偶校验码加信息位 奇偶校验码时明码 “ 1 ”的个数决定是奇校验码还是偶校验码 奇偶校验码\begin{cases} 奇偶校验码只能检一位错,且不能纠错\\ 奇偶校验码分为奇校验码和偶校验码加信息位\\ 奇偶校验码时明码\\ “1”的个数决定是奇校验码还是偶校验码 \end{cases} 奇偶校验码⎩ ⎨ ⎧奇偶校验码只能检一位错,且不能纠错奇偶校验码分为奇校验码和偶校验码加信息位奇偶校验码时明码“1”的个数决定是奇校验码还是偶校验码
4、带符号的编码
在数字系统中,通常以最高一位作为符号位,0表示正数,1表示负数,其余位为数值位
1)原码
二进制数的源码表示方法是:符号位
+数值位
方法:十进制->二进制->原码(默认8位)
+36D -> +0100100B -> [00100100]原
-36D -> -0100100B -> [10100100]原
注:+0与-0原码不同
2)反码
正数的反码:与原码相同
+36D -> [00100100]反
负数的反码:符号位为“1”+原码的数值按位取反
+78D -> [01001110] 原 -> [01001110]反
-78D -> [11001110] 原 -> [00110001]反
注:+0与-0的反码也不同
3)补码
正数和0的补码:与原码相同,符号位+数值位
负数的补码:负数的反码+1
+78D -> [01001110] 原 -> [01001110]反 -> [01001110]补
-78D -> [11001110] 原 -> [10110001]反 -> [10110010]补
注意
假设X和Y均为正数:
[X]补 + [Y]补 = [X+Y]补 两个数的补码之和等于两数之和的补码
[X]补 - [Y]补 = [X]补 + [-Y]补
补码相加时,符号位参与运算,若符号位有进位(溢出),则自动舍去
计算:15-13(要求8位字长)
15
−
13
=
(
15
)
补码
−
(
13
)
补码
=
(
15
)
补码
+
(
−
13
)
补码
00001111
+
11110011
=
100000010
−
>
[
00000010
]
补
15 - 13 = (15)_{补码} - (13)_{补码} = (15)_{补码} + (-13)_{补码}\\ 00001111 + 11110011 = 100000010 -> [00000010]_{补}
15−13=(15)补码−(13)补码=(15)补码+(−13)补码00001111+11110011=100000010−>[00000010]补
舍去溢出位,只取8位
n位字长的二进制原码、反码、补码所表示的十进制数值范围是:
原码:-(2n-1 - 1) ~ +(2n-1 - 1)
反码:-(2n-1 - 1) ~ +(2n-1 - 1)
补码:-(2n-1) ~ +(2n-1 - 1) 不含-0
数制和编码的区别
数制:数制之间进行相互转换,进制之间数值相等
编码:用一定的编码方式表示给定信息
,除原、反、补外,编码不能计算
其数值。