【数字电子电路读书笔记(二)】

数字电子电路(二)


第一章 概述

第二章 数制与码制

第三章 逻辑代数

第四章 组合逻辑电路

第五章 触发器

第六章 时序逻辑电路



一、数制

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)
000000000
010001011
020010022
030011033
040100044
050101055
060110066
070111077
081000108
091001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F

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=mn1=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-12n
01
12
24
38
416
532
664
7128
8256
9512
101024
112048
124096
138192
1416384
1532768
1665536

方法三:(针对八及十六进制)

借助二进制

例:(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.5022==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.522222=====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 (2n1)<M2n
代入可得: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 842154212421BCDBCDBCD3

  • 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

十进制84215421
000000000
100010001
701111010
910011100

明码:编码形式唯一

有权值码:8421码、5421码、2421码

注:有权值码不一定是明码

十进制数8421 BCD5421 BCD2421 BCD*余三码
00000000000000011
10001000100010100
20010001000100101
30011001100110110
40100010001000111
50101100010111000
60110100111001001
70111101011011010
81000101111101011
91001110011111100
unused1010010101010000
unused1011011001100001
unused1100011101110010
unused1101110110001101
unused1110111010011110
unused1111111110101111

2、格雷码

格雷码也被称为循环

编码特点:对称轴两边最高位对称取反,其余低位对称相等。

一位格雷码

十进制格雷码
00
11

两位格雷码

十进制格雷码
000
101
211
310

四位格雷码

特点:相邻两个码组之间只有一位不同;相邻两个码又称为单位距离码

可靠性:当连续发送两个相邻码组时,因为只有一位不同,出错的可能性降低。

十进制数B3B2B1B0G3G2G1G0
000000000
100010001
200100011
300110010
401000110
501010111
601100101
701110100
810001100
910011101
1010101111
1110111110
1211001010
1311011011
1411101001
1511111000

3、奇偶校验码

结构:信息位+测试位

奇校验码

信息位与测试位中,1的个数之和为奇数

信息位(例:8421 BCD码)测试位
00001
00010
00100
00111
01000
01011
01101
01110
10000
10011

偶校验码

信息位与测试为中1的个数之和位偶数

信息位(例:8421 BCD码)测试位
00000
00011
00101
00110
01001
01010
01100
01111
10001
10010

奇/偶编码的可靠性

  • 在未加奇/偶测试位前,码组中某一位出错的概率是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]_{补} 1513=(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

数制和编码的区别

数制:数制之间进行相互转换,进制之间数值相等

编码:用一定的编码方式表示给定信息,除原、反、补外,编码不能计算其数值。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值