版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机与计算机系统通用电子数字计算机General-PurposeElectronicDigitalComputer通用计算设备通用对专用计算机是一种通用计算设备阿兰·图灵,1936年“论可计算数及其在判定问题中的应用”通用=电子设备电子对机械“电子”,计算机硬件实现的物理基础计算机执行的计算通过电子电路中的电流、电位等实现数字设备数字对模拟“数字”是现代计算机的一种基本特征,也是计算机通用性的一个重要基础在现代计算机里,所有信息都是采用数字化的形式表示整数、小数、文字、图像、声音等计算机核心处理部件:CPU(CentralProcessingUnit,中央处理器)指令和程序指令(instruction)处理器完成的最小工作单位计算机执行的一件明确定义的工作计算机程序(program)由一组指令组成指令是计算机程序中规定的可执行的最小的工作单位存储程序控制原理卡片对存储器现代计算机的构建思想冯·诺依曼程序存储在存储器里CPU负责指挥信息的处理执行信息的实际处理微处理器采用半导体集成电路技术制造指甲般大小的硅片上集成了数以亿计的晶体管计算机系统硬件(hardware)和软件(software)硬件:处理器、存储器和外部设备等软件:程序和文档冯·诺依曼(VonNeumann)模型冯·诺依曼模型存储器程序数据处理单元执行指令控制单元指令执行的顺序输入设备将程序和数据送入计算机中输出设备将执行结果送出计算机外存储器能够存储信息的设备又称为内存存储的内容组成程序的指令程序所需的数据处理单元包含许多复杂的功能单元最简单的单元ALU(ArithmeticandLogicUnit,算术和逻辑单元)寄存器堆/文件ALU附近,临时存取数据例如,计算(A+B)×C,先在存储器中存储A+B的结果,随后读取出来,再和C相乘访问存储器的时间远长于执行加法或乘法的时间使用临时存储空间存储A+B的结果控制单元指挥信息的处理具体工作:在执行程序的过程中,跟踪存储器中的指令PC跟踪要处理的下一条指令记录下一条指令在存储器中的位置——“程序计数器”(ProgramCounter,简称PC)/“指令指针”控制器控制单元可以是多个控制器,分别从属于各个部件ALU控制器,控制ALU执行何种运算I/O控制器,控制输入和输出……输入/输出设备外围设备(peripherals)键盘——输入;监视器(显示器)——输出输入:鼠标,数字扫描仪,磁盘输出:打印机,磁盘计算机系统的抽象分层抽象分层设计者采用“抽象分层”,设计复杂的计算机系统抽象分层硬件和软件设计者在解决问题时使用的一种方法每一层次对它的上一层隐藏了自己的技术细节计算机系统的抽象层次程序例:对一列数字进行排序首先,选择一种排序算法,例如冒泡排序算法然后,选择一种程序设计语言把算法转换为程序高级语言与执行程序的计算机无关,“独立于机器”,如C语言、C++语言、Java语言等低级语言与执行程序的计算机紧密相关机器语言和汇编语言冒泡排序——C程序片段冒泡排序——RISC-V汇编语言程序片段冒泡排序——RISC-V机器语言程序片段语言处理高级语言和汇编语言程序必须翻译成执行程序作业的机器(目标机器)的指令,即机器语言翻译工作通常可以由翻译程序自动来完成高级语言翻译程序,编译器或解释器汇编语言翻译程序,汇编器操作系统支持输入/输出操作的设备管理例程操作系统包含文件管理、内存管理、进程管理等主要功能指令集结构指令集结构(InstructionSetArchitecture,ISA)计算机硬件和软件之间的接口从计算机硬件设计者的视角来看,指令集结构是硬件设计的依据从程序设计者的角度来看,指令集结构指明了在一台机器上编写程序时所要注意的全部信息指令集结构指明了计算机能够执行的指令集计算机能够执行的操作和每一步操作所需的数据X86指令集结构1978年,Intel公司设计ARM(AdvancedRISCMachine,进阶精简指令集机器)指令集结构移动设备领域RISC-V指令集结构2010年,加州大学伯克利分校,开源指令集微处理器即CPU,一种指令集结构的实现例:X86指令集结构1978年,8086微处理器80386、80486微处理器1998年,Pentium(奔腾)微处理器逻辑电路CPU由大规模集成电路组成主要包括算术逻辑单元ALU和控制单元电子元件每一种基本的逻辑电路都是由特定的物理元件实现例:CMOS(ComplementaryMetalOxideSemiconductor,互补金属氧化物半导体)逻辑电路,采用金属氧化物半导体晶体管制造比特和数据类型现代计算机信息:数字化计算:电子电路位/比特计算机,电子元件控制电子流动对电压的有无做出反应存在电压:“1”不存在电压:“0”“0”和“1”,比特(bit)或位“二进制位”(binarydigit)的缩写两种稳定状态自然界的事物通常具有两种稳定的状态存储信息的磁盘磁化和未磁化光盘凹(聚光)和凸(散光)接近0和远离0接近0的电压和远离0的电压3.3伏的电压为1,0伏的电压为02.9伏的电压:1,0.2伏的电压:0二进制对十进制如果采用十进制,需要测量电压的具体值复杂电路的电压值必须稳定识别多个数值不仅仅是0和1对多个位进行组合位组合8位(8根线路上的电压)01001110,11100111……256(即28)个不同的值k位,2k个不同的值每一种组合是一个编码,对应某个特定的值位运算对表示出来的信息进行运算1679年,德国数学家莱布尼茨,二进制表示及算术运算1854年,英国数学家乔治·布尔,二进制的逻辑运算,布尔代数现代计算机工作的数学基础数据类型同一个数值,多种表示方法整数6十进制计数法,“6”一元计数法,“正一”罗马字符,VI二进制计数法,“0110”某种表示法,编码,运算数据类型计算机中的数据类型二进制补码整数正负整数ASCII码从键盘输入计算机,显示在显示器上的字符浮点数类似于十进制“科学计数法”整数数据类型无符号整数任务执行的次数课程的选课人数……位置记数法——十进制十进制系统2862——200,2
1028——8
101位置记数法,或定位数制10,数制中的基数或基位置记数法——二进制无符号整数基数为2,二进制数为0和1使用8位,十进制数字30000111100
27+0
26+0
25+1
24+1
23+1
22+1
21+0
20二进制无符号整数k位数0
2k-1,2k个整数K=80
255,256个整数有符号整数k位,2k个不同的数字,一半表示正数,一半表示负数K=4+1
+7-1
-7剩下2个一个:0-7
+7另一个:?14个如何分配?+1
+7?-1
-7?正数位置记数法k位0
2k-1-1最高位为0k=4的正数二进制表示十进制0000000011001020011301004010150110601117最大的正数:7以0开头负数——原码二进制表示十进制00000000110010200113010040101501106011171000-01001-11010-21011-31100-41101-51110-61111-7k=4,-1
-7?最高位0:正数(+)最高位1:对应的负数(-)负数——反码二进制表示十进制00000000110010200113010040101501106011171000-71001-61010-51011-41100-31101-21110-11111-0k=4,-1
-7?对正数“按位取反”计算4+(-3)采用与十进制加法相同的规则原码表示法 0100(4)
+ 1011(-3) = 1111(-7)反码表示法 0100(4)
+ 1100(-3) =(1)0000(0)负数——补码二进制表示十进制00000000110010200113010040101501106011171000-81001-71010-61011-51100-41101-31110-21111-1k=40+7位置记数法-8-1尽可能使逻辑电路最简单算术逻辑单元算术逻辑单元(ArithmeticandLogicUnit,ALU)两个输入和一个输出不知道所加的两个位组合表示什么采用与十进制加法相同的规则A+(-A)=00101(+5)
+ ?(-5) = 0000(0)0101(+5)
+ 1011(-5) = 0000(0)二进制表示十进制000000001100102001130100401015011060111710001001-71010-61011-51100-41101-31110-21111-11000?在对每个数值加0001后,应得到正确的结果1000:-81000(?)
+ 0001(1) = 1001(-7)二进制表示十进制00000000110010200113010040101501106011171000-81001-71010-61011-51100-41101-31110-21111-11111、0000、0111、10001111和0000:-1和01111(-1)
+ 0001(1) =(1)0000(0)在做补码算术运算时这个进位总是被忽略0111:+71000:-8二进制表示十进制00000000110010200113010040101501106011171000-81001-71010-61011-51100-41101-31110-21111-1K位组合-2k-1
2k-1-10后面跟k-1个1:2k-1-11后面跟k-1个0:-2k-1k个1:-1-A的表示A
+ A的反码 =11…11(-1)
+
00…01(1) =00…00(0)-A的表示把A的反码加1“取反加1”示例-6的二进制补码表示是什么(采用4位表示)?1.A:+6,01102.A的反码10013.1001
+0001 =1010(-6)验证0110(6)
+1010(-6) =(1)0000二进制-十进制一个8位的二进制补码数采取如下格式:a7a6
a5a4a3a2a1a01.检查最前面的a70,正数,直接计算1,负数,先“取反加1”2.计算a6
26+a5
25+a4
24+a3
23+a2
22+a1
21+a0
203.如果原数值是负数,加一个负号前缀
将二进制补码整数11110010转换为十进制数值
1.检查最前面一位1,负数,先“取反加1”
000011102.计算1
23+1
22+1
21=143.原数值是负数,加负号前缀“-14”示例十进制-二进制如果一个正的二进制数的最右端的数字为1,这个数为奇数;否则为偶数8位二进制数(正数)a6
26+a5
25+a4
24+a3
23+a2
22+a1
21+a0
20如何找到ai(i=0,1,…6)的值?示例:+123正数,最高位a7:0123=a6
26+a5
25+a4
24+a3
23+a2
22+a1
21+a0
20奇数,a0:1在等式两端同时减去1122=a6
26+a5
25+a4
24+a3
23+a2
22+a1
21在等式两端同时除以261=a6
25+a5
24+a4
23+a3
22+a2
21+a1
20奇数,a1:1在等式两端同时减去160=a6
25+a5
24+a4
23+a3
22+a2
21在等式两端同时除以230=a6
24+a5
23+a4
22+a3
21+a2
20a2=015=a6
23+a5
22+a4
21+a3
20a3=17=a6
22+a5
21+a4
20a4=13=a6
21+a5
20a5=11=a6
20a6=1二进制表示为01111011除2取余2
123
余数2
61
1低位2
30
12
15
02
7
12
3
121
101高位将余数从高位向低位依次排列1111011正数,最高位为0二进制表示为01111011总结十进制数N,k位补码表示1.将N的绝对值“除2取余”,得到其绝对值的二进制表示;2.如果原来的十进制数为正,在二进制数前加0,得到结果;3.如果原来的十进制数为负,在二进制数前加0,再“取反加1”,得到结果。算术运算加法运算从右到左进行,每次一位每次运算,产生一个“和”与一个“进位”进位在1的后面产生
0011
(3)
+ 0100
(4)
0111
(7)减法运算
0111 (7)
0111
(7)
- 0100
(4) +
1100
(-4)
(1)0011(3)x+x把一个数x加上它自身00111101(61)
+00111101(61)01111010数字向左移了一位61+6161可以表示为0
26+
1
25+
1
24+
1
23+1
22+0
21+
1
2061+61=2
61,可以表示为2
(0
26+
1
25+
1
24+
1
23+1
22+0
21+
1
20)也就是0
27+1
26+1
25+1
24+1
23+0
22+1
21每位上的数字都向左移了一位恰当的位数为减少占用空间,采用恰当的位数表示数值6用4位(0110)用16位(0000000000000110)-6用4位(1010)用16位(1111111111111010)不同长度数值做加法首先必须将它们表示为相同的长度14+(-4)
0000000000001110
+
1100?14+(-4)0000000000001110(14)
+0000000000001100(12)
0000000000011010(26)0000000000001110(14)
+1111111111111100(-4)
0000000000001010(10)
符号扩展用0扩展正数的左端,值不会改变用1扩展负数的左端,值亦不会改变符号扩展(Sign-EXTension,SEXT)用于不同长度的数值之间的运算溢出用4位补码数据类型,计算2+6
0010+0110
1000结果为-8,为什么会出现错误?2+6=8,>+7(0111)0111,使用4位补码数据类型能够表示的最大正数8不能用4位的补码表示示例
1101
(-3)
+ 1010
(-6)
0111
(7)检测溢出如果两个数符号相同和的符号不同一个负数和一个正数的和永远不会出现溢出浮点数数据类型小数6.023
1023
?32位补码整数-2147483648
2147483647-231
+231-1精度31位,数值范围231浮点数类型类似于科学记数法6.023
1023符号:+有效数字:6.023分数指数:23单精度(float)浮点数32位符号(S)0代表正数,1代表负数指数:8位无符号整数,0
255分数:23位s指数exponentbias分数fraction1位8位23位IEEE浮点数算术运算标准符号位:(-1)s指数偏移值和分数1<=exponent<=254exponent=0exponent=2551<=exponent<=254指数为了表示出负数,实际上的指数是该无符号整数减去127后得到的数值:28=>10000111(135)2-125=>00000010
(2)分数规格化,实际表示的是24位的精度23位分数二进制小数点左端的没有明确表示出来的一位1exponent=00000000指数:-126分数以0开头,23位二进制分数00000000000001000000000000000000符号位0:正数8位指数偏移值0,-126分数,0.00001000000000000000000,2-52-5
2-126,2-131能够表示很小的数当分数部分全为0时,表示数值0exponent=11111111如果符号位为0,分数域全为0,表示正无穷如果符号位为1,分数域全为0,表示负无穷如果分数域不全为0,表示“非数值”IEEE双精度浮点数s指数分数111位52位64位:示例:-45.812545的二进制数表示:01011010.8125的二进制数表示:?位置记数法十进制0.78=7
10-1+8
10-2二进制0.110=1
2-1
+1
2-2
=>0.75(2-1=0.5,2-2=0.25,……)十进制数转换成二进制数乘2取整0.8125
2高位
1.6250
21.2500
20.5000
2低位1.00000.1101-45.812545.8125的二进制数表示:0101101.1101规格化:1.011011101
25,1.011011101
2132-127符号位:1指数偏移值:10000100,132分数:0110111010000000000000011000010001101110100000000000000示例00111101000000000000000000000000最高位为0,正数指数偏移值:122,减去127,实际指数为-5分数:0+1.00000000000000000000000
2-51/32示例01000010111100001111000000000000指数域133,133-127=6,指数为+6分数域的小数点左边加一个11.11100001111小数点向右移动6位1111000.01111120.46875示例11000001000101000000000000000000符号位:1,负数指数域:130,130-127,指数为3分数域小数点左边加一个11.00101小数点向右移动3位1001.01-9.25示例01111111011111111111111111111111符号:正指数:254-127,+127分数域小数点左边加一个1:1.11111111111111111111111,约等于2结果约为2128示例10000000000000000000000000000001符号:负指数域:0,指数-126分数域的小数点左边加一个02-23结果:2-23
2-126-2-149加法运算与科学计数法类似加法运算,需经过五步完成1、对指数操作:使二数的指数相等2、分数运算3、结果规格化4、舍入操作5、判断溢出十六进制表示法十六进制表示法由二进制的位置记数法发展而来方便人们手工处理二进制数位二进制-十六进制16位二进制位组合(无符号整数)a15a14a13a12
a11a10a9a8a7a6a5a4a3
a2
a1a0计算如下:215
a15+214
a14+213
a13+212
a12+211
a11+210
a10+29
a9+28
a8+27
a7+26
a6+25
a5+24
a4+23
a3+22
a2+21
a1+20
a0=212
[23
a15+22
a14+21
a13+20
a12]+28
[23
a11+22
a10+21
a9+20
a8]+24
[23
a7+22
a6+21
a5+20
a4]+20
[23
a3+22
a2+21
a1+20
a0]=163
h3
+162
h2+161
h1+160
h0十六进制h3=23
a15+22
a14+21
a13+20
a12h2=23
a11+22
a10+21
a9+20
a8h1=23
a7+22
a6+21
a5+20
a4h0=23
a3+22
a2+21
a1+20
a0h3、h2、h1、h0的值0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F二进制十六进制十进制0000000001110010220011330100440101550110660111771000881001991010A101011B111100C121101D131110E141111F15二进制-十六进制01101100010111110011110101101110按照每四位进行分割01101100010111110011110101101110每四位转换为相等的十六进制数6C5F3D6E十六进制表示为“x6C5F3D6E”十六进制-二进制将每一位十六进制转换为对应的4位二进制组合十六进制“x41”二进制表示“01000001”ASCII码ASCII如何表示从键盘输入计算机或显示在显示器上的字符?AmericanStandardCodeforInformationInterchange[ǽski],美国信息交换标准码,美国国家标准局制定ASCII键盘上的每个键被一个唯一的ASCII码所识别8个二进制位表示在键盘上敲击某个键时,相应的8位码被存储,并提供给计算机标准ASCII码字符ASCII字符ASCII字符ASCII字符ASCIIDHDHDHDHNUL000SP3220@6440`9660SOH101!3321A6541a9761STX202"3422B6642b9862ETX303#3523C6743c9963EOT404$3624D6844d10064ENQ505%3725E6945e10165ACK606&3826F7046f10266BEL707'3927G7147g10367BS808(4028H7248h10468HT909)4129I7349i10569LF100A*422AJ744Aj1066AVT110B+432BK754Bk1076BFF120C,442CL764Cl1086CCR130D-452DM774Dm1096DSO140E.462EN784En1106ESI150F/472FO794Fo1116FDLE161004830P8050p11270DC1171114931Q8151q11371DC2181225032R8252r11472DC3191335133S8353s11573DC4201445234T8454t11674NAK211555335U8555u11775SYN221665436V8656v11876ETB231775537W8757w11977CAN241885638X8858x12078EM251995739Y8959y12179SUB261A:583AZ905Az1227AESC271B;593B[915B{1237BFS281C<
603C\925C|1247CGS291D=613D]935D}1257DRS301E>
623E^945E~1267EUS311F?633F_955FDEL1277FD:十进制表示H:十六进制表示标准ASCII码第0~32号及第127号控制字符或通讯专用字符第32号,空格(Space)第33~126号可见字符包括阿拉伯数字,英文字母,英文标点等通过标准键盘直接输入特点字母顺序?大小写之间的关系?数字字符与数值之间的关系?没有新的运算–整数运算C语言中的数据类型与二进制表示C语言中的数据类型int,二进制补码整数类型char,ASCII码double,双精度浮点数示例是否会造成无限循环?以k=32为例,循环结束时,i的值是-2147483648inti=1; while(i>0) i++;float类型和double类型的区别表示数值的范围和精度单精度浮点数即float用23位表示分数域,223为8388608,共7位精度:6到7位有效数字最大的数约为2128,约3.40
1038范围:-3.40
1038到+3.40
1038双精度浮点数double用52位表示分数域,252为4503599627370496,共16位精度为15到16位最大的数约为21024范围:-1.79
10308
到+1.79
10308示例“floatx=3.14;”x在计算机中的二进制表示3的二进制数表示:0110.14的二进制表示:计算至小数点后第22位的结果为0010001111010111000010,第23位以后是10001111......舍入操作:如果选择进1操作1.10010001111010111000011
2128-127010000000100100011110101110000113.14与其二进制浮点数表示之间存在误差数据类型转换“i=3.1;”(i被声明为int类型),i的值变量的类型不能被改变浮点数值通过省略小数部分被舍为整数值,3“i+3.1”在计算机中的运算过程将整数转换为浮点数,然后进行计算“x+'a'”表达式的值如果x为1,表达式的值为98字符型转化为整数类型,再进行计算示例输出结果计算“x==3.14”关系表达式先将x的值从float类型转换为double类型分数域位数增加,但值不变,即精度不变比较:二者不相同floatx=3.14;if(x==3.14) printf("true");else printf("false");输入输出的格式说明使用格式化输出函数printf,输出变量、表达式的值使用格式化输入函数scanf,从标准输入设备输入数值输出示例:%d,%x,%o,%cprintf("25plus76indecimalis%d.\n",25+76);printf("25plus76inhexadecimalis%x.\n",25+76);printf("25plus76inoctalis%o.\n",25+76);printf("25plus76asacharacteris%c.\n",25+76);%d:将“25+76”的结果以十进制数的形式显示出来将二进制“01100101”转换为“101”三个字符显示%x:将“25+76”的结果以十六进制数的形式显示出来将二进制“01100101”转换为“65”两个字符显示%o:将“25+76”的结果以八进制数的形式显示出来将二进制“01100101”转换为“145”三个字符显示%c:将“25+76”的结果直接解释为ASCII字符显示二进制“01100101”解释为字符“e”25plus76indecimalis101.25plus76inhexadecimalis65.25plus76inoctalis145.25plus76asacharacterise.输出:%f输出浮点数“%.7f”,表示在小数点后保留7位小数x的二进制表示为01000000010010001111010111000011计算出其十进制数值为3.1400001049041748046875floatx=3.14;printf("%.7f\n",x);输入:%f,%lffloatx;scanf("%f",&x);将键盘输入的如“15.0”类型的字符序列转化为float类型浮点数doubley;scanf("%lf",&y);将键盘输入的如“15.0”类型的字符序列转化为double类型浮点数十六进制字面常量使用前缀0x表示零扩展intmemoryAddress=0x30000000;intvalueE=0xE;printf("%x\n",memoryAddress);printf("%d\n",valueE);“30000000”和“14”二进制逻辑运算二进制逻辑运算计算机采用二进制表示数值如何存储这些二进制数值,进行计算?数学基础——二进制逻辑运算二进制逻辑运算二进制逻辑运算与算术运算的区别二进制逻辑运算为按位运算,按位进行算术运算,如加法,位与位之间有进位关系与函数(AND)二元函数,两个源操作数只有当两个源操作数都是1时输出才为1,否则为0真值表n+1列和2n行前面n列对应n个源操作数源操作数组合:2n种可能每组输入组合:一行最后一列每种组合的输出与函数(AND)ABAND0000101001112列源操作数,4种输入组合输出为0001按位与运算对两个m位的位组合对应位上的数字按位做与运算位组合编号规则自右向左,顺序编号,最右边的一位是[0]。最左边是[n-1]一个32位组合,A00010010001101000101011001111000[31]位是0,[30]位是0,[29]位是0,[28]位是1……记作:A[31:0]按位与运算示例a,b是8位的位组合,c是a和b做与运算的结果a:00111010b:11110000c:00110000c的左边4位与a的左边4位相同,c的右边4位均为0与0做与运算结果为0,与1做与运算结果保持不变位屏蔽/掩码假设有一个8位的位组合A,最右边的两位有特殊的重要性。根据存储在A中的最右边两位数,要求计算机处理4个任务之一。如何把这两位孤立出来?位屏蔽为00000011和A做与运算,从7位到2位的位置上都为0,而0位和1位中的原来的值还在0和1的位置上结果是四种组合之一:00000000,00000001,00000010或00000011或函数二元函数,需要两个操作数如果两个操作数中有一个为1,输出为1当且仅当两个操作数都为0时,输出为0或函数2列源操作数,4种输入组合输出为0111ABOR000011101111按位或运算对两个m位的位组合按位进行或运算,包含或运算(inclusive-OR)a,b是8位的位组合,c是a和b做或运算的结果a:00111010b:11110000c:11111010c的左边4位均为1,右边4位与a的右边4位相同与1做或运算结果为1,与0做或运算结果保持不变非函数一元函数,一个操作数对输入进行补运算,即取反操作当输入为1时,输出为0;输入为0时,结果为1ANOT1001按位非运算对一个m位的位组合按位进行非运算c是对a进行非运算的结果a:00111010c:11000101异或函数异或(exclusive-OR,XOR)二元函数,两个源操作数“相异为1,相同为0”ABXOR000011101110按位异或运算对m位的位组合做异或运算假如a和b是8位的位组合,c是a和b的异或运算:a:00111010b:11110000c:11001010c的左边4位为a的左边4位按位取反的结果,而c的右边4位则与a的右边4位相同与1做异或运算结果表示取反,与0做异或运算结果保持不变按位取反假如a是8位的位组合,b是11111111,c是a和b的异或运算: a:00111010 b:11111111 c:11000101c即为a取反的结果判断两个位组合是否相同如果异或函数的输出全为0,两个位组合是相同的C的按位运算符低级语言的特征按位运算符“&”:按位“与”运算“|”:按位“或”运算“~”:按位“非”“^”:按位“异或”C的移位运算符“<<”执行左移“>>”执行右移第一个操作数是被移位的数值第二个操作数是移动的位数左移,零填充右移,符号扩展示例x、a和b都是int类型intx;inta=3; /*二进位位组合0011*/intb=4; /*二进位位组合0100*/x=a&b; /*0000,即0*/x=a|b; /*0111,即7*/x=a^b; /*0111,即7*/x=a<<1; /*0110,即6,3
21*/x=b<<a; /*00100000,即32,4
23*/x=b>>a; /*0000,即0,4/23的商*/x=~a|~b; /*1100|1011,1111,即-1,因为x是有符号整数*/晶体管晶体管微处理器MOS(Metal-OxideSemiconductor,金属氧化物半导体)晶体管N型和P型使用开关的简单电路开关控制电路的合与开,使电灯亮或灭可使用N型或P型MOS晶体管代替N型MOS晶体管如果栅极被加以3.3伏电压在源极和漏极之间存在一个闭合回路,导通如果栅极被加以0伏电压在源极和漏极之间存在一个断路,截止晶体管——电子开关闭合开关栅极被加以3.3伏电压形成回路,LED发光打开开关栅极被加以0伏电压电路断开,LED不亮P型MOS晶体管当栅极的电压为0伏时闭合回路当栅极的电压为3.3伏时断路CMOS电路P型和N型晶体管以互补的方式工作CMOS(ComplementaryMOS)电路既包含P型晶体管又包含N型晶体管的电路注意N型晶体管源极不能接电源正极P型晶体管源极不能接地门电路门电路MOS晶体管,实现与、或、非逻辑运算电路与门、或门、非门电路非门(反相器)栅极连在一起,输入端漏极连在一起,输出端PMOS管源极接电源正极NMOS管源极接地输入=0真值表输入输出0伏3.3伏3.3伏0伏输入输出0110非门符号表示或非门P型晶体管串联,N型晶体管并联A=0,B=3.3A=0,B=0;A=3.3,B=3.3ABC0伏0伏3.3伏0伏3.3伏0伏3.3伏0伏0伏3.3伏3.3伏0伏或非门真值表ABC001010100110或非门符号表示IEEE形状特征型符号IEEEStandardGraphicSymbolsforLogicFunctionsIEC(InternationalElectrotechnicalCommission,国际电工委员会)矩形国标符号GraphicalSymbolsforDiagrams-Part12:BinaryLogicElements或门在或非门输出端增加一个反相器A=0,B=1或门真值表ABCD0010010110011101或门符号表示IEEE形状特征型符号IEC矩形国标符号与门与非门P型晶体管并联,N型晶体管串联ABCD0010011010101101与非门/与门符号表示IEEE形状特征型符号IEC矩形国标符号两个以上输入的门N个输入,与门仅当所有的输入变量都为1时,输出才为1只要有一个输入为0结果就为0N个输入,或门只要任意一个输入变量为1输出就为1仅当所有的输入变量都为0时输出才为03个输入的与门——符号表示3个输入的与门——真值表ABCD00000010010001101000101011001111思考题1、一个有三个输入的与门的晶体管级电路如何构建?一个有四个输入的或门的晶体管级电路如何构建?2、如果现有若干与门(有2个输入),如何构建一个有三个输入的与门?组合逻辑电路逻辑结构连接门电路,构建逻辑结构实现信息的运算和存储两种基本类型能够存储信息不能存储信息组合逻辑电路不能存储信息,“判定元件”输出仅由当前输入值的组合决定信息不能存储用于处理信息译码器,多路选择器,全加法器等译码器2个输出的译码器门级电路译码器只有一个输出为1,其他全为0输出为逻辑1的是对应于要被检测的输入组合通常,译码器有n个输入,2n个输出被检测的输入组合的输出为1,所有其他的输出则为0A=1,B=0多路选择器选择一个输入连接到输出由选择信号S决定由哪个输入连接到输出S=0标准表示法多路选择器由n条选择线和2n个输入组成n=2标准表示法思考题如何构建一个有八个输入的多路选择器?需要多少根选择线?二进制加法真值表两个n位操作数的某一列进行二进制加法全加法电路真值表——门级电路真值表中的7种输入组合之一(除000组合之外),都有一个与门产生输出1当输入是使真值表中Ci+1为1的相应组合时,或门的输出Ci+1必为1输出Si的或门的输入,是真值表中Si为1的输入组合,经过与门产生的输出输入组合000Si或Ci+1都不会产生值为1的输出两个4位二进制数的加法电路可编程逻辑阵列可编程逻辑阵列ProgrammableLogicArray,PLA实现任意逻辑函数的通用组件一组与门(与阵列),一组或门(或阵列)组成与门的数目对应于真值表中输入组合(行)的数目有n个输入的逻辑函数,PLA包括2n个与门,每个与门有n个输入或门的数目对应于真值表中输出的列数可编程对于真值表的输出列中产生输出为1的对应的行,将PLA中的该与门的输出与或门的输入相连思考题如果用A、B、C分别表示Ai,Bi和Ci,用X表示Si,用Y表示Ci+1,如何连接,就可以得到全加法器电路?逻辑完备性logicalcompleteness任意逻辑函数都可以通过PLA实现,PLA只由与门、或门和非门组成门集合{与、或、非}在逻辑上是完备的基本存储元件基本存储元件译码器、多路选择器和全加法器不能存储信息存储1位信息的基本存储元件锁存器SR锁存器“保持”状态000011001100S=R=0“置位”状态S=1,R=0100011“复位”状态S=0,R=1011100S=R=1
锁的最后状态取决于组成门的晶体管的电子特性真值表SRQQ’00保持0101101011不定与非门组成的SR锁存器S和R的设置,和或非门相反门控D锁存器控制何时置位、何时复位S和R不同时为1门控D锁存器D:DataWE:WriteEnableWE=1,输出Q=DR=NOT(D),S=DWE=0,存储D的值S=R=0寄存器将多位数据存储于一个独立单元一组门控D锁存器,WE共享时序逻辑电路时序逻辑电路既能处理信息,也能存储信息根据现在输入的信息和之前存储的信息做出判定时序逻辑电路有限状态机电子系统、机械系统、航空系统等的控制器示例:电话应答机根据响铃的次数(如3次),决定是否开启录音机输出(是否开启录音机)不仅取决于当前的输入(是否响铃),还取决于这次输入之前的一系列输入(已经响过2次铃)状态记录响铃的次数根据如下状况,判定是否开启录音机:A.不开启录音机,还未响铃;B.不开启录音机,但已响铃1次;C.不开启录音机,但已响铃2次;D.开启录音机。应答机的状态状态在某一特定时刻,系统内所有相关元素的一个瞬态图电话应答机的4个状态:A.不开启录音机,还未响铃;B.不开启录音机,但已响铃1次;C.不开启录音机,但已响铃2次;D.开启录音机。有限状态机寄存器容量有限,所以状态数目必须有限使用有限状态机描述系统的行为有限状态机由5个元素组成:有限数目的状态;有限数目的外部输入;有限数目的外部输出;明确定义的状态转换函数;明确定义的外部输出函数。电话应答机的状态图外部输入:响铃,0表示在规定的时间内不再响铃输出:是否录音时钟触发触发状态向下一个状态转换的机制应答机:在一定时间内是否响铃使用时钟发生器来计时时钟发出的信号值在0伏和某个特殊的固定电压之间交替时钟周期重复的时间间隔序列中的一个时间间隔示例:交通灯控制器东西向大街和南北向大街相交的十字路口在东西向和南北向各有一组交通灯每组灯只包括红灯(1、3)和绿灯(2、4)一组通行按钮,供行人按下控制器没有行人时第一个时钟周期,1号灯和4号灯亮下一周期,2号灯和3号灯亮重复……有行人按下通行按钮在当前的时钟周期结束时,1号灯和3号灯亮(东西向和南北向红灯)保持一个时钟周期然后,回到1号灯和4号灯亮……状态图3个状态1、4号灯亮2、3号灯亮1、3号灯亮时序逻辑电路寄存器:存储2位信息,00,01,10组合逻辑电路输出外部输出:控制灯内部输出:寄存器的输入外部输出4个:标记为1、2、3和4输出表当前状态[1]当前状态[0]1灯2灯3灯4灯001001010110101010内部输出2个:标记为下一状态[1]和[0]状态转换表行人按钮当前状态[1]当前状态[0]下一状态[1]下一状态[0]000010010001000100101011011010组合逻辑电路存储元件主从触发器,2个门控D锁存器构成时钟周期前半段(1),不改变存储在主锁中的值,无论主锁中是什么值,都会传给从锁时钟周期后半段(0),不改变存储在从锁中的值,在主锁中的值将被改变存储器存储器基本存储元件锁存器、触发器存储一位信息寄存器存储多位信息存储器(Memory)二维阵列,2n行,每一行存储m位存储单元(MemoryLocation)存储器n=32232m=8xFFFFFFFF
……x4000000300010010x4000000200110100x4000000101010110x4000000001111000
……x00000000
地址和每一个单元联系在一起的唯一的标识符地址空间唯一可识别的单元总数210,1024,1K220,1M230,1G232,4G,4294967296寻址能力存储在每个单元中的信息的位数大多数的存储器,字节可寻址B(byte,字节),表示8位的信息量原始操作数据,键盘上键入的某个字符存储器容量“4GB”4G,约40亿个存储单元每个单元包含一个字节的信息一个42的存储器地址:A[1:0]输出:Q[1:0]输入:D[1:0]存储元(Memorycell)地址译码器字线多路选择器字WE存储元读单元2写单元2SRAMStaticRandomAccessMemory,静态随机访问存储器“静态”:只要给它供电,其内部数据就不会丢失“随机访问”:可以以任意顺序访问存储元:更少的晶体管实现指令集结构处理器(CPU)是如何设计的?执行加法、乘法等指令第一步:定义指令集体系结构(InstructionSetArchitecture,ISA)或指令集结构指令集结构计算机能够执行的指令集计算机能够执行的操作和每一步操作所需的数据存储器/内存寄存器集RISC-V指令集加州大学伯克利分校发布的一个开源指令集核心:RV32I,基础整数指令集,即32位整数指令集内存地址空间:232(即4G)寻址能力:8位,字节可寻址字长和字字长(wordlength):ALU正常处理的信息量的大小每一个元素被称为一个字(word)RV32I字长:32位,4个字节左边的字节——高字节右边的字节——低字节字起始地址小尾端(Little-Endian)数据的存储和排列顺序小尾端将字的高位字节存放在内存的高地址端,低位字节存放在低地址端字节8位如,ASCII码只需访问1个存储单元寄存器在CPU内部,一组读写速度更快的寄存器通用寄存器集(GPR)每一个寄存器中的位数,一个字,32位32个整数寄存器x0、x1……x31注意,寄存器x0是硬件连线的常量0其他重要寄存器控制器中的程序计数器PC,它记录了下一条要执行的指令的地址GPRx000000000000000000000000000000000x100000000010000000000000000000000x200111111111111111111111111110000x300010000000000000000000000000000
......
x3011111111111111111111111111111010x3111111111111111111111111111111000CISC和RISCCISC(ComplexInstructionSetComputer,复杂指令集计算机)具有复杂化的倾向,提供了功能强大的复杂指令,开发程序比较容易,但是由于指令复杂,指令执行效率较低Intel的x86指令集RISC(ReducedInstructionSetComputer,精简指令集计算机)RISC的指令集较小,指令执行效率比CISC高,但是,在开发程序方面则有所欠缺RV32I指令集RV32I指令32位从左向右依次编号,31、30、……0符号[l:r]位组合的子单元字段指令格式R-类型I-类型S-类型B-类型U-类型J-类型312524201915141211760funct7rs2rs1funct3rdopcode31201915141211760imm[11:0]rs1funct3rdopcode312524201915141211760imm[11:5]rs2rs1funct3imm[4:0]opcode313025242019151412118760imm[12]imm[10:5]rs2rs1funct3imm[4:1]imm[11]opcode311211760imm[31:12]rdopcode31302120191211760imm[20]imm[10:1]imm[11]imm[19:12]rdopcode操作码由指令的[6:0]位定义,最多可定义128种操作码RV32I只定义了11种操作码R类型:0110011I-类型:分为0000011、0010011、1100111、0001111和1110011五种S-类型:0100011B-类型:1100011U-类型:0110111和0010111两种J-类型:1101111函数函数(Function)R-类型、I-类型、S-类型、B-类型[14:12]位每种操作码最多可以定义8种不同的函数R-类型[31:25]位也是函数码最多可定义1024种不同的函数RV32I只定义了47条指令操作数指令的其他字段源寄存器(RegisterSource,RS)目标寄存器(RegisterDestination,RD)立即数(Immediate,Imm)每个寄存器使用5位编码来识别,为寄存器分配的字段是5位RV32I指令功能分类按照功能整数运算整数的算术、逻辑和移位运算等数据传送在内存和寄存器之间传送数据条件分支根据两个寄存器的比较结果,进行分支跳转无条件跳转改变指令执行的顺序其他功能控制状态寄存器指令,系统调用,以及将控制转移到调试环境等RV32I指令表312524201915141211760
0000000rs2rs1000rd0110011add0100000rs2rs1000rd0110011sub0000000rs2rs1001rd0110011sll0000000rs2rs1010rd0110011slt0000000rs2rs1011rd0110011sltu0000000rs2rs1100rd0110011xor0000000rs2rs1101rd0110011srl0100000rs2rs1101rd0110011sra0000000rs2rs1110rd0110011or0000000rs2rs1111rd0110011andimm[11:0]rs1000rd0010011addiimm[11:0]rs1010rd0010011sltiimm[11:0]rs1011rd0010011sltiuimm[11:0]rs1100rd0010011xoriimm[11:0]rs1110rd0010011oriimm[11:0]rs1111rd0010011andi0000000shamtrs1001rd0010011slli0000000shamtrs1101rd0010011srli0100000shamtrs1101rd0010011sraiimm[31:12]rd0110111luiimm[31:12]rd0010111auipcimm[11:0]rs1000rd0000011lbimm[11:0]rs1001rd0000011lhimm[11:0]rs1010rd0000011lwimm[11:0]rs1100rd0000011lbuimm[11:0]rs1101rd0000011lhuimm[11:5]rs2rs1000imm[4:0]01
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026 上海泳池设备安装工程公司庭院泳池工程服务商
- 26秋二年级上册数学应用题考点专项练习
- GEO SEO优化服务商:2026年双轨服务商TOP3榜与分阶段选型指南
- 3G移动通信系统间干扰剖析与应对策略研究
- 标准化鲜果冷压深加工生产基地项目可行性研究报告模板-申批备案
- 2xxx系铝合金搅拌摩擦焊接头组织与性能的多维度剖析
- 20世纪90年代以来欧盟对华直接投资:趋势、影响与展望
- 高新区项目大气污染防治专项施工方案
- 混凝土圆管涵施工方案
- 泛光照明专项施工组织方案内容【范本模板】
- 2026年国企中层干部竞聘笔考试题与答案
- 2026年演出经纪人考试题库及答案(真题)
- 2026江苏苏州市相城区人民检察院招聘编外人员3人笔试题库及答案详解(新)
- 2026年哈尔滨市道里区六年级下学期期末英语试题及答案
- 2026年生产文员测试题及答案
- 2026中国氢能储运装备安全标准与国际对标报告
- 乡镇(街道功能区)党政领导干部离任经济事项交接表(开发区和园区适用本表-修订)
- 2026上海博物馆公开招聘12名工作人员考试备考试题及答案解析
- 2026年高考化学终极冲刺:专题03 化学反应原理综合题(大题专练逐空突破)(全国适用)(原卷版及解析)
- GB/T 31458-2026医院安全防范要求
- 实验室触电培训
评论
0/150
提交评论