null第二章 运算方法和运算器第二章 运算方法和运算器重点:数据表示
简介:运算方法和运算器
补充:数字逻辑二进制数二进制数便于计算机存储及物理实现
特点:逢二进一,由0和1两个数码组成,基数为2,各个位权以2k表示
二进制数:
anan-1…a1a0.b1b2…bm=
an×2n+an-1×2n-1+…+a1×21+a0×20
+b1×2-1+b2×2-2+…+bm×2-m
其中ai,bj非0即1十六进制数十六进制数用于表达二进制数,相互转换简单
基数16,逢16进位,位权为16k,16个数码:
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
十六进制数:
anan-1…a1a0.b1b2…bm=
an×16n+an-1×16n-1+…+a1×161+ a0×160
+b1×16-1+b2×16-2+…+bm×16-m
其中ai,bj是0~F中的一个数码二进制数或十六进制数转换为十进制数二进制数或十六进制数转换为十进制数方法:按权展开
二进制数转换为十进制数
0011.1010B
=1×21+1×20+1×2-1+0×2-2+1×2-3
=3.625
十六进制数转换为十进制数
1.2H
=1×160+2×16-1
=1.125十六进制数用后缀字母H二进制数用后缀字母B十进制整数转换为二或十六进制数十进制整数转换为二或十六进制数整数部分转换:用除法
十进制数整数部分不断除以基数2或16,并记下余数,直到商为0为止
由最后一个余数起逆向取各个余数,则为转换成的二进制和十六进制数
126=01111110B
126=7EH十进制小数转换为二或十六进制数十进制小数转换为二或十六进制数小数部分转换:用乘法
分别乘以各自的基数,
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
整数部分,直到小数部分为0为止
0.8125=0.1101B
0.8125=0.DH
小数转换会发生总是无法乘到为0的情况
可选取一定位数(精度)
将产生无法避免的转换误差十六进制数的加减运算十六进制数的加减运算二进制和十六进制数之间具有对应关系
整数从左向右
小数从右向左
每4个二进制位对应一个十六进制位
00111010B=3AH,F2H=11110010B
十六进制数的加减运算类似十进制
逢16进位1,借1当16
23D9H+94BEH=B897H
A59FH-62B8H=42E7H真值和机器数真值和机器数真值:现实中真实的数值
机器数:计算机中用0和1数码组合表达的数值
定点数:固定小数点的位置表达数值的机器数
定点整数:将小数点固定在机器数的最右侧表达的整数
定点小数:将小数点固定在机器数的最左侧表达的小数
浮点数:小数点浮动表达的实数
无符号数:只表达0和正整数的定点整数
有符号数:表达负整数、0和正整数的定点整数
符号位需要占用一个位,常用机器数的最高位
0表示正数、1表示负数
具有原码、反码、补码、移码无符号数的表示无符号数的表示没有符号位,使用全部字长来表示数值大小
字长N=8时,编码:00000000~11111111
取值范围:0~255(28-1)
字长N=16时,编码:0000~FFFFH
取值范围:0~65535(216-1)
字长N=32时,编码:00000000~FFFFFFFFH
取值范围:0~232-12.1 数据与文字的表示方法2.1 数据与文字的表示方法2.1.1 数据格式
2.1.2 数的机器码表示
2.1.3 字符与字符串的表示方法
2.1.4 汉字的表示方法
2.1.5 校验码null计算机中常用的数据表示格式有两种,一是定点格式,二是浮点格式
定点格式容许的数值范围有限,但要求的处理硬件比较简单
浮点格式容许的数值范围很大,但要求的处理硬件比较复杂2.1.1 数据格式null定点数的表示方法定点表示:约定机器中所有数据的小数点位置是固定不变的。通常将数据表示成纯小数或纯整数
定点数x=x0x1x2…xn 在定点机中表示如下(x0表示符号位,0代表正号,1代表负号)定点整数的小数点位置定点小数的小数点位置定点数例定点数例例:
X=+1010110.纯整数:X = 01010110.正数,符号位取0Y= - 1101001.纯整数:Y = 11101001. (原码)负数,符号位取1X=+0.11011Y=-0.10101符号位取0纯小数:X = 0.11011符号位取1纯小数:X = 1.10101 (原码)定点整数的表示范围定点整数的表示范围纯整数的表示范围为(x1x2…xn各位均为0时最小;各位均为1时最大,x0为符号位)
0≤|x|≤ 2n -1
例如:n=8,最大值编码:11111111
表示: 11111111=100000000-1
=28-1
目前计算机中多采用定点纯整数表示,因此将定点数表示的运算简称为整数运算定点小数的表示范围定点小数的表示范围纯小数的表示范围为(x1x2…xn各位均为0时最小;各位均为1时最大,x0为符号位)
0≤|x|≤1-2-n
例如,n=8,最大值编码:0.11111111
表示: 0.11111111 =1.0-0.00000001
=1-2-8null如何用定点数来表示非常大(e.g. 2×10+33 )的数和非常小(e.g. 9×10-28 )的数?2×10+33 = 0.2 ×1034
9×10-28 = 0.9 ×10-27引入比例因子1034和10-27 非常大和非常小的数浮点数的表示方法浮点数的表示方法把一个数的有效数字和数的范围在计算机的一个存储单元中分别予以表示
数的小数点位置随比例因子的不同而在一定范围内自由浮动
一个十进制数N可以写成
N= 10e×M
一个R进制数N可以写成
N=Re×MM 尾数
e 指数
R 基数数的科学表达法阶码和尾数阶码和尾数用定点小数表示,给出有效数字的位数决定了浮点数的表示精度表达指数部分
用整数形式表示,指明小数点在数据中的位置决定浮点数的表示范围早期计算机表达法32位单精度浮点数32位单精度浮点数E:含阶符的阶码,8 位
阶码采用移码方式来表示正负指数S:1位符号位
0表示正数
1表示负数 M:尾数,23位小数表示,小数点放在尾数域最前面IEEE 754
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
64位双精度浮点数64位双精度浮点数E:含阶符的阶码,11位S:1位符号位M:尾数,52位小数IEEE 754标准浮点数的规格化浮点数的规格化例:156.78 =15.678×101
= 1.5678×102
= 0.15678×103=RE×M对于二进制数
1011.1101 =0.10111101 ×2+4
= 10.111101 ×2+2
= 1.0111101 ×2+3 (规格化表示法) = 1.0111101 ×2+11 (规格化表示法)
=RE×M那么,计算机中究竟采用哪种数据形式?多种数据形式二进制数规格化表示原则规格化表示原则尾数最高有效位为1,隐藏,并且隐藏在小数点的左边(即:1≤M<2)
32位单精度浮点数规格化表示
x= (-1)s×(1.M)× 2E-127
e=E-127(E=e+127)
64位双精度浮点数规格化表示
x= (-1)s ×(1.M)× 2E-1023
e=E-1023(E=e+1023)指数真值e 用偏移码形式表示为阶码EIEEE 754标准null④ X=(-1)s×1.M×2e =+(1.011011)×23
=+1011.011=(11.375)10② 指数e=阶码-127 =1000 0010-01111111
=00000011=(3)10③ 包括隐藏位1的尾数1.M =1.011011例1:浮点机器数 (41360000)16,求真值null例2:真值20.59375,求32位单精度浮点数① 分别将整数和分数部分转换成二进制数
20.59375=10100.10011② 移动小数点,使其在第1、2位之间10100.10011=1.010010011×24e=4S=0E=4+127=131=10000011M=010010011③ 得到32位浮点数的二进制存储格式为:0 100 0001 1010 0100 1100 0000 0000 0000
=(41A4C000)16nullE=1(0000 0001)~254(1111 1110)
e=-126~+127
表达的数据范围(绝对值):
最小值: e=-126,M=0(1.M=1)
十进制表达:2-126≈1.18×10-38
最大值: e=127,M=11…1(23个1)
1.M=1.11…1 (23个1) =2-2-23
十进制表达:(2-2-23)×2127
≈2×2127≈3.40×103832位单精度规格化浮点数IEEE 754标准nullE=1~2046
e=-1022~+1023
表达的数据范围(绝对值) :
最小值: e=-1022,M=0(1.M=1)
十进制表达:2-1022≈2.23×10-308
最大值: e=1023,M=11…1(52个1)
1.M=1.11…1 (52个1) =2-2-52
十进制表达:(2-2-52)×21023
≈ 2×21023 ≈1.79×1030864位双精度规格化浮点数IEEE 754标准null真值0的机器数(机器零)
阶码E=0,尾数M=0
正0:S=0,负0:S=1
非规格化浮点数:阶码E=0,尾数M≠0
规格化浮点数:阶码E=1~254(11111110)
无穷大的机器数
阶码E=全1(11111111) ,尾数M=0
+∞:S=0,-∞:S=1
NaN(not a number,不是一个数)
阶码E=全1(11111111) ,尾数M≠0
用来
通知
关于发布提成方案的通知关于xx通知关于成立公司筹建组的通知关于红头文件的使用公开通知关于计发全勤奖的通知
异常情况IEEE 754标准32位单精度浮点数 十进制数串的表示方法 十进制数串的表示方法1.字符串形式
每个十进制的数位或符号位都用一个字节存放-382.压缩的十进制数串形式
一个字节存放两个十进制的数位,符号位占半个字节(例如用C表示正,D表示负)+12+123-12 每个数位可用BCD码或ASCII码BCD码(Binary Coded Decimal)BCD码(Binary Coded Decimal)二进制编码的十进制数
一个十进制数位用4位二进制编码来表示
常用8421 BCD码:低10个4位二进制编码表示0~9
压缩BCD码:一个字节表达两位BCD码
非压缩BCD码:一个字节表达一位BCD码(低4位表达数值,高4位常设置为0)
BCD码很直观
BCD码:0100 1001 0111 1000.0001 0100 1001
十进制真值: 4978.149BCD码便于输入输出,表达数值准确十进制数据表示十进制数据表示人们习惯于用十进制表示数据,而计算机则采用二进制表示和处理数据。所以向计算机输入数据时,需要进行十进制数到二进制数的转换;输出数据时,则要进行二进制数到十进制数的转换处理。在数据量较小的情况下,这样的转换对机器运行效率的影响不是很大。但是,在某些应用领域,运算简单而数据量很大,进行这些转换所占用的时间比例比较大。所以为了提高机器的运行效率,计算机可以用十进制来表示和处理数据。
一个十进制数位是用若干位二进制编码表示。用四位二进制代码的不同组合来表示一个十进制数码的编码方法,称为二—十进制编码,也称BCD码(Binary Coded Decimal)。 常用这种编码作为十进制数转换成二进制数的中间过渡。即先将一个十进制数用BCD码来表示,再把它们送入机器, 计算机通过标准子程序使其转换成纯二进制数。 二—十进制编码原理二—十进制编码原理1、二—十进制的编码都采用压缩的十进制串的方法,即四个二进制位的值来表示一个十进制数码。
2、各种编码的区别在于选用哪十个状态。选择的原则是:要考虑输入和输出时转换方便;内部运算时,加、减运算规则要尽量简单;在特定场合,可能有其它一些要求。
3、从每个二进制位是否有确定的位权区分,可把二—十进制编码分为有权码和无权码。
二-十进制有权码 二-十进制有权码 对于有权码,将每位的数码与相应的位权相乘,再求和,就可以得到它所代表的十进制数值。
8421码实现加、减运算时的修正规则:
(1)4位一组二进制数,两个8421码表示的数相加之和等于或小于1001,即十进制的9时,不需要修正,在各组内,二进制代码相加,仍遵循“逢二进一”的规则。
(2)4位一组二进制数,两个8421码相加结果大于1001(即十进制9)时,则应该对该组的4位进行“加6修正”,使它向高一组产生进位。
(3)4位一组二进制数,两个8421码相加结果大于或等于10000(即十进制16),而向高一组进位时,则应该对该4位进行“加6修正”。二-十进制有权码 二-十进制有权码 编码方法:8421码,2421码、5211码、4311码和84-2-1码( 四位二进制位的位权分别为8、4、-2、-1)等。其最方便使用的共同特点为:
(1) 对于2421码、5211码、4311码,任何两个十进制数位,采用这三种编码的任何一种编码,它们相加之和等于或大于10时,其结果的最高位向左产生进位,小于10时则不产生进位。这一特点有利于实现“逢十进位”的计数和加法规则。
(2) 对于2421码、5211码、4311码和84-2-1码,任何两个十进制数位,采用这四种编码的任何一种编码,它们相加其和等于9时,即它们的二进制编码位互为反码,则其结果的四个二进制位一定是1111,能较好地体现十进制的按9 取补与二进制的按1取补的对应关系,这对减法很有用。二-十进制无权码 二-十进制无权码 无权码中,用的较多的是余3码(Excess-3 code)和格雷码(Gray code),格雷码又称循环码。
1. 余3码
(1)余3码是在8421码的基础上,把每个代码都加上0011而形成的。
(2)普通8421码的加法器仍能为余3码加法器直接利用,具体规则如下:
(A)若两个十进制数的余3码相加,如果结果不产生进位,则从所得和值去减0011,便得十进制位和的余3码。
(B)若两个十进制数的余3码相加,如果结果有进位,则其进位正确, 但需将所得和值加上0011,才求得十进制数和的余3码。
二-十进制无权码二-十进制无权码2. 格雷码
(1)格雷码的编码规则是使相邻的两个代码,只有一个二进制位的状态不同,其余三个二进制位必须有相同状态。
(2)优点:从一个编码变到下一个相邻编码时,只有一个位的状态发生变化,有利于保证代码变换的连续性。在模拟/数字转换和产生节拍电位等应用场合特别有用。
二—十进制的编码的部分编码
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
二—十进制的编码的部分编码方案定点整数的原码表示定点整数的原码表示定点整数的原码形式为x0x1x2… xn
使用8位二进制:[105] 10=[01101001]2
X=+105,则 [X]原 =01101001
X=-105, 则 [X]原 =11101001
0使用原码有两种表达形式
[+0]原 =00000000
[-0]原 =10000000定点小数的原码表示定点小数的原码表示定点整数的原码形式为x0.x1x2… xn
使用8位二进制表示
x=+0.1001,则 [X]原 =01001000
x=-0.1001,则 [X]原 =11001000
0使用原码有两种表达形式
[+0]原 =00000000
[-0]原 =10000000定点整数的补码定点整数的补码有符号整数在计算机中默认采用补码
最高位表示符号:正数用0,负数用1
正数补码:直接表示数值大小(=原码=无符号数)
负数补码:将对应正数补码取反加1
[105]补码=01101001
[-105]补码=[01101001]取反+1
=10010110+1=10010111
8位二进制补码表示的数值范围:-128~+127
16位二进制补码表示的数值范围:-215~+215-1
32位二进制补码表示的数值范围:-231~+231-1
N位二进制补码表示的数值范围:-2N-1~+2N-1-1为什么是补码负数求补负数求补负数真值“取反加1”得机器数补码
负数补码“取反加1”得到负数真值
补码:11100000
真值:-([11100000]求反+1)=-(00011111+1)
=-00100000=-25=-32
负数求补运算,等效于用带借位的0作减法
真值:-8,补码:[-8]补码=100H-08H=F8H
补码:11111000,真值:-(100H-F8H)=-08H=-8用十六进制表达和运算,方便!定点整数的反码定点整数的反码反码:二进制的各位数码 0 变为1,1变为0
有符号整数采用反码
最高位表示符号:正数用0,负数用1
正数反码:直接表示数值大小(=原码=补码)
负数反码:将对应正数反码取反
[105]反码=01101001
[-105]反码=[01101001]取反=10010110定点整数的移码(偏移码)定点整数的移码(偏移码)移码通常用于表示浮点数的阶码
有符号整数采用移码
最高位表示符号:正数用1,负数用0
移码的传统定义:
[X]移码= 2n +X 2n >X≥-2n
[105]移码=10000000+01101001=11101001
[-105]移码=1000000-01101001=00010111传统定义与标准浮点数阶码的定义不同null例5例5 设机器字长16位,定点表示,尾数15位,数符1位,问: ⑴ 定点原码整数表示时,最大正数是多少?最小负数是多少? ⑵ 定点原码小数表示时,最大正数是多少?最小负数是多少?例5之解例5之解⑴定点原码整数表示
最大正数值= (215-1)10=(+32767) 10
最小负数值= -(215-1) 10 =(-32767) 10
⑵定点原码小数表示
最大正数值=(+0.111...11)2 =(1- 2-15) 10
最小负数值=(-0.111..11)2=-(1- 2-15)10数的机器码表示数的机器码表示正数的原码、反码、补码等于真值,只有负数才分别有不同的表示方法
采用补码,减法运算可以用加法运算实现,节省硬件,目前机器中广泛采用补码表示法
有些机器用原码进行存储和传送,运算时改用补码
有些机器做加减法时用补码,做乘除法时用原码
移码表示法主要用于表示浮点数的阶码,可以直接比较大小。表示范围和补码相同,只有最高位相反null同一代码的不同含义一个代码,采用不同编码,其数值不一样
计算机内一个二进制数: 1000 0001
不同的含义
无符号二进制数: 129
8421 BCD码: 81
有符号整数的原码: -1
有符号整数的反码: -126
有符号整数的补码: -127
三种编码的比较 三种编码的比较 相同点:
1、 三种编码(原码、反码、补码)的最高位都是符号位。
2、 当真值为正时,三种编码的符号位都用0表示,数值部分与真值相同。 即它们的表示方法是相同的。
3、 当真值为负时,三种编码的符号位都用1表示,但数值部分的表示各不相同,数值部分存在这样的关系:补码是原码的“求反加1”(整数),或者“求反末位加1”(小数);反码是原码的“每位求反”。
4、 它们所能表示的数据范围基本一样,-2n
B THEN READ(C)从低位字节向高位字节的顺序存放从高位字节向低位字节的顺序存放小端方式和大端方式小端方式和大端方式多字节数据通常也连续存放在主存,占用多个连续的字节存储单元
小端方式(Little Endian)
低字节数据存放在低地址存储单元
高字节数据存放在高地址存储单元
大端方式(Big Endian)
低字节数据存放在高地址存储单元
高字节数据存放在低地址存储单元32位数据的存储方式32位数据的存储方式32位数据(4个字节):12 34 56 78H
主存以字节为单位,每个存储单元具有一个存储器地址,其中存放一个字节数据(8位)汉字的输入编码汉字的输入编码数字编码
国标区位码,用数字串代表一个汉字输入
拼音码
以汉字拼音为基础的输入方法
字形编码
用汉字的形状(笔划)来进行的编码
例如五笔字形汉字交换码汉字交换码汉字交换码是不同的汉字处理系统之间交换信息用的编码
汉字也是一种字符
1981年我国制定了《信息交换用汉字编码字符集基本集GB2312-80》国家标准(简称国标码)。每个汉字的二进制编码用两个字节表示。共收录一级汉字3755个,二级汉字3008个,各种符号682个,共计7445个汉字内码汉字内码汉字内码是用于汉字信息的存储、检索等操作的机内代码,一般采用两个字节表示
汉字内码有多种方案,常以国标码为基础的编码
例如,将国标码两字节的最高位置1后形成
汉字“啊”的国标码
3021H (0011 0000 0010 0001)
对应的汉字内码
B0A1H (1011 0000 1010 0001)null字模码汉字的字模码为:
16位× 16位=32字节汉字字模点阵及编码汉字的表示方法汉字的表示方法汉字的输入编码、交换码、汉字内码、字模码是计算机中用于输入、内部处理、交换、输出四种不同用途的编码,不要混为一谈 字符代码化(输入)校验码校验码校验码:能够发现甚至纠正信息传输或存储过程中出现错误的编码
检错码:仅能检测出错误的编码
纠错码:能够发现并纠正错误的编码
最简单且应用广泛的检错码:奇偶校验码
奇校验:使包括校验位在内的数据中为“1”的个数恒为奇数
偶校验:使包括校验位在内的数据中为“1”的个数恒为偶数(包括0)
只能检测出奇数个位出错的情况,不能纠错例7:用奇校验和偶校验进行编码例7:用奇校验和偶校验进行编码数据
10101010
01010100
00000000
01111111
11111111偶校验码
10101010 0
01010100 1
00000000 0
01111111 1
11111111 0奇校验码
10101010 1
01010100 0
00000000 1
01111111 0
11111111 1计算机的数据表示计算机的数据表示整数编码
定点数,无符号数,有符号数(补码),BCD
实数编码
浮点数,单精度,双精度,规格化
字符编码:ASCII码
汉字编码
输入码,机内码,交换码,字形码
国际字符编码:Unicode编码:用文字、符号或者数码来表示某种信息(数值、语言、操作指令、状态)的过程练习练习代码(BE580000)16是采用单精度格式保存的浮点数,求其十进制真值
有一个十进制数100.25,请将它转换成单精度浮点数格式运算方法和运算器运算方法和运算器2.2 定点加法、减法运算
2.3 定点乘法运算
2.4 定点除法运算
2.5 定点运算器的组成
2.6 浮点运算方法和浮点运算器
例8:x=0.1001,y=0.0101,求x+y例8:x=0.1001,y=0.0101,求x+y[x] 补=0.1001,[y] 补=0.0101
[x] 补 0.1001
+ [y] 补 0.0101
[x+y] 补 0.1110
所以 x+y=+0.1110 例9:x=+0.1011,y=-0.0101,求x+y例9:x=+0.1011,y=-0.0101,求x+y[x] 补=0.1011,[y] 补=1.1011
[x] 补 0.1011
+ [y] 补 1.1011
[x+y] 补 10.0110
所以 x+y=0.0110null[x1]补=1.0010
[- x1]补=﹁[x1]补+ 2-4
=0.1101+0.0001=0.1110
[x2]补=0.1101
[-x2]补=﹁[x2]补+ 2-4
=1.0010+0.0001=1.0011 例10: 已知x1=-0.1110,x2=+0.1101 求: [x1]补 ,[-x1]补 ,[x2]补 ,[-x2]补例11:x=+0.1101,y=+0.0110,求x-y例11:x=+0.1101,y=+0.0110,求x-y[x]补=0.1101, [y]补=0.0110
[-y]补=1.1010
[x] 补 0.1101
+ [-y] 补 1.1010
[x-y] 补 10.0111
所以 x-y=+0.0111
null2.2.3 溢出概念与检验方法两个正数相加,结果为负(即:大于机器所能表示的最大正数),称为上溢。
两个负数相加,结果为正(即:小于机器所能表示的最小负数),称为下溢。
运算出现溢出,结果就是错误的[例12] x=+0.1011, y=+0.1001,求x+y。[例12] x=+0.1011, y=+0.1001,求x+y。[解:]
[x]补=0.1011 , [y]补=0.1001
[x]补 0.1011
+ [y]补 0.1001
[x+y]补 1.0100
两正数相加,结果为负,显然错误。
--运算中出现了“上溢”[又例] x=+0.1011, y=+0.0010, 求x+y。[又例] x=+0.1011, y=+0.0010, 求x+y。[解:]
[x]补=0.1011 , [y]补=0.0010
[x]补 0.1011
+ [y]补 0.0010
[x+y]补 0.1101
两正数相加,结果无溢出[例13] x=-0.1101, y=-0.1011, 求x+y。[例13] x=-0.1101, y=-0.1011, 求x+y。[解:] [x]补=1.0011 [y]补=1.0101
[x]补 1.0011
+ [y]补 1.0101
[x+y]补 0.1000两负数相加,结果为正,显然错误。
--运算中出现了“下溢”[又例] x=-0.1101, y=-0.0010, 求x+y。[又例] x=-0.1101, y=-0.0010, 求x+y。[解:] [x]补=1.0011 [y]补=1.1110
[x]补 1.0011
+ [y]补 1.1110
[x+y]补 1.0001两负数相加,结果为负,无 溢出。null进一步结论:
当最高有效位产生进位而符号位无进位时,产生上溢;
当最高有效位无进位而符号位有进位时,产生下溢。产生“溢出”的原因:
分析可知,当最高有效数值位的运算进位与符号位的运算进位不一致时,将产生运算“溢出”“溢出”检测方法:“溢出”检测方法: 为了判断“溢出”是否发生,可采用两种检测的方法。
第一种方法:采用双符号位法, 称为“变形补码”或“模4补码”,可使模2补码所能表示的数的范围扩大一倍第二种溢出检测方法:采用“单符号位法”。
当最高有效位产生进位而符号位无进位时,产生上溢;
当最高有效位无进位而符号位有进位时,产生下溢。
故:溢出逻辑表达式为: V=Cf⊕Co
其中: Cf为符号位产生的进位,Co为最高有效位产生的
进位。(显然:此逻辑关系可用异或门方便地实现)
在定点机中,当运算结果发生溢出时,机器通过逻
辑电路自动检查出溢出故障,并进行中断处理。 2.2.4 基本的二进制加法/减法器2.2.4 基本的二进制加法/减法器在计算机中完成两个二进制数相加的基本加法器有半加器和全加器。半加器在完成两数相加时,不需要考虑低位进位。全加器用来完成两个二进制数相加,并且同时考虑低位的进位,即全加器完成三个一位数相加的功能。
设:
Ai表示被加数的第i位
Bi表示加数的第i位
Ci为第i-1位向第i位产生的进位
Ci+1为第i位向第i+1位产生的进位
Si为第i位产生的和
则全加器以Ai、Bi、Ci为输入,以Ci+1、Si为输出构成一个逻辑图。2.2.4 基本的二进制加法/减法器2.2.4 基本的二进制加法/减法器2.2.4 基本的二进制加法/减法器2.2.4 基本的二进制加法/减法器全加器的表达式为:
Si = Ai Bi Ci
Ci+1 = AiBi + BiCi + AiCi
一位全加器内部逻辑图 C=ab 与非C=a⊕b 异或2.2.4 基本的二进制加法/减法器2.2.4 基本的二进制加法/减法器利用全加器可以实现两数的和或差
1、串行加法:从低位开始,每步只完成一位运算的加法。
串行加法器只需要一个全加器和一个进位触发器
计算两个n位数之和,需要n+1步(1位符号位),或n+2步(2位符号位)运算。
高位运算只有等低位运算完成后才能进行,速度较慢
2、并行加法器:可在同一时刻完成n位数的运算。
若采用变形补码表示一个机器数,则符号位需2位,这时需要n+2个加法器。
运算速度比串行进位加法器高很多,这是用足够多的硬件设备换来的2.2.4 基本的二进制加法/减法器2.2.4 基本的二进制加法/减法器2.3 定点乘法运算2.3 定点乘法运算实现乘除法运算的方案:
1、当使用乘除运算较多,速度要求高时,用硬件直接实现;
2、一般情况,配置乘除法选件;
3、对速度要求不高的机器,用软件实现。
2.3.1 原码一位乘法 (1/5)2.3.1 原码一位乘法 (1/5)算法描述
设[X]原=Xs.Xn-1Xn-2…Xi…X1X0=Xs.Xv
[Y]原=Ys.Yn-1Yn-2…Yi…Y1Y0=Ys.Yv
则乘积[Z]原=Zs.Zv=(XsYs).(Xv×Yv)
运算步骤
(1) 从乘数的最低位开始,用乘数B的每个二进制位去乘被乘数A,若B 的某个二进制位为1,则得位积A;如为0,则得位积0。
(2) B的各位分别乘以A的所得的位积,因为位权不同,逐次向左移位,即在空间上按一定位数错开,这样逐位进行下去,直到乘数各位都乘完为止。
(3) 把经过移位对准的各次位积相加起来即得结果。2.3.1 原码一位乘法 (2/5)2.3.1 原码一位乘法 (2/5)缺点
将多个数一次相加,机器难以实现。一般的加法器,只能把两个输入数相加,多个位积的同时输入是无法实现的。
乘积位数增长了一倍,即2n,而机器字长只有n位。
改进
(a)把一次求和的操作,变成逐步累加求部分积的操作
(b)将求积过程中逐位按权左移位积的操作,改为位积不动,而是上次部分积右移的操作2.3.1 原码一位乘法 (3/5)2.3.1 原码一位乘法 (3/5)手算方法
例如 求A=0.1101和B=0.0110的乘积
机器算法
若用Zi表示第i次部分积,则
Z0 = 0
Z1 = 2-1 (BnA + Z0)
Z2 = 2-1 (Bn-1A + Z1)
…
Zi = 2-1 (Bn-i+1A + Zi-1)
…
Zn = 2-1 (B1A + Zn-1)
Zn即为A和B的乘积,即A·B=Zn
2.3.1 原码一位乘法 (4/5)2.3.1 原码一位乘法 (4/5)例题 已知X=-0.1011,Y=0.1001,求[X×Y]原
解: [X]原=1.1011,[Y]原=0.1001
|X| = 0.1011,|Y| = 0.1001
按原码一位乘法运算规则,求[X×Y]原的数值部分。
|X|×|Y| = 0.01100011, 而Zs = Xs Ys = 1 0 =1
最后求得[X×Y]原 = 1.01100011例题之原码一位乘法运算过程例题之原码一位乘法运算过程 原码一位乘法逻辑结构原理图 原码一位乘法逻辑结构原理图2.3.1 原码一位乘法 (5/5)2.3.1 原码一位乘法 (5/5)工作原理
(I) 乘法开始时,“启动”信号使控制触发器Cx置“1”,于是开启时序脉冲T。
(II) 当乘数寄存器R1最末位为“1”时,部分积Zi和被乘数X在加法器中相加,其结果输出至R0的输入端。
(III)一旦打入控制脉冲T到来,控制信号LDR0使部分积右移一位,与此同时,R1也在控制信号LDR1作用下右移一位,且计数器i计数一次。
(IV)当计数器i=n时,计数器的溢出信号使触发器Cx置“0”,关闭时序脉冲T, 乘法宣告结束。
若将R0和R1连接起来,乘法结束时乘积的高n位部分在R0,低n位部分在R1,R1中原来的乘数Y由于移位而全部丢失。2.4 定点除法运算2.4 定点除法运算2.4.1 原码除法算法原理
主要内容:原码一位除法
两个原码表示的数相除时,商的符号由两数的符号“异或”求得,即同号时为正,异号为负。商的数值可由两数的绝对值相除求得。2.4.1 原码一位除法2.4.1 原码一位除法手算: 假设被除数X=0.1001,除数Y=0.1011,计算X/Y
0. 1 1 0 1 商Q
0.1011 /----------------------------------------------
0. 1 0 0 1 0 X(R0)
- 0. 0 1 0 1 1 2-1 Y,除数右移一位,减
----------------------------------
0. 0 0 1 1 1 0 R1
- 0. 0 0 1 0 1 1 2-2 Y,除数右移一位,减
----------------------------------
0. 0 0 0 0 1 1 0 R2
0. 0 0 0 1 0 1 1 2-3 Y,除数右移一位,不减
----------------------------------
0. 0 0 0 0 1 1 0 0 R3
- 0. 0 0 0 0 1 0 1 1 2-4 Y,除数右移一位,减
----------------------------------
0. 0 0 0 0 0 0 0 1 R4
得商X/Y=0.1101,余数=R4=0.000000012.4.1 原码一位除法2.4.1 原码一位除法笔算特点:
(1) 每次都是由心算来比较余数和除数的大小,余数大时,商1;余数小时,商0。第一次比较时,余数就是被除数。
(2) 每做一次减法,总是保持余数不动,而除数向右移一位。
(3) 商的符号单独处理。
为适应机器运算,需要进行改进:
(1)用补码加代替直接减(两个符号位)
(2)除数右移改为余数左移。2.4.1 原码一位除法-恢复余数法2.4.1 原码一位除法-恢复余数法设被除数 [X]原 = Xs.X1X2…Xn
除数 [Y]原 = Ys.Y1Y2…Yn
商 [Q]原 = Qs.Q1Q2…Qn
余数 [R]原 = Rs.R1R2…Rn
则它们之间有如下关系:
[X]原 = [Y]原×[Q]原 + [R]原
其除法过程如下:
符号处理: Zs = Xs Ys
商的数值部分,变成两正数相除,即|X|/|Y|(|X|<|Y|),每一步除法通过2Ri-|Y|(i=0,1,…,n,R0=|X|)进行比较:
若2Ri-|Y| = Ri+1≥0,即余数为正(Ris=0),则商上“1”;
若2Ri-|Y| = Ri+1〈0,即余数为负(Ris=1),则商上“0”。2.4.1 原码一位除法-恢复余数法2.4.1 原码一位除法-恢复余数法原码恢复余数法与笔算除法极相似,只是处理方法有些不同。
(1)比较余数和除数的大小,计算机是通过用余数减去除数求得差值,然后通过差值进行判定。当差值大于0时,商上1;当差值小于0时,商上0。
(2)减去除数的运算,机器可用加上除数的补码机器负数的方式转换为加法运算。另外,当差值小于0时,商上“0”,不够减,多减去了除数,还必须加上除数,重新恢复原来的余数。
(3)笔算中,每做一次减法,除数右移一位。2.4.1 原码一位除法-恢复余数法2.4.1 原码一位除法-恢复余数法例 X = -0.1001,Y= -0.1011,求[X/Y]原
解:[X]原 = 1.1001,[Y]原 = 1.1011
|X| = 0.1001,|Y| = 0.1011,[-|Y|]补 = 1.0101
运算过程如下:
所以,Qs = 1 1 = 0
[X/Y]原 = [Q]原 = 0.1101
[R]原 = 2-4R5 = 0.00000001例题之原码恢复余数除法运算过程例题之原码恢复余数除法运算过程2.4.1 原码一位除法-加减交替法2.4.1 原码一位除法-加减交替法原码加减交替法的规则:当余数为正时,商上1,余数左移一位,减除数绝对值得新余数;当余数为负时,商上0,余数左移一位, 加除数绝对值得新余数。
证明:
若被除数为X,除数Y,当上商操作进行到第i位商数时,设余数为Ri,则有下式:
Ri = 2Ri-1 +(- |Y|)
(1) 若Ri≥0,则该位商上“1”,下一步操作是:
Ri+1 = 2Ri +(- |Y|)
(2) 若Ri<0,则该位商上“0”,下一步恢复余数:
Rj= Ri+|Y|,然后,
Ri+1 = 2Rj +(- |Y|)
=2(Ri+|Y|)+(- |Y|)
=2Ri+|Y|2.4.1 原码一位除法-加减交替法2.4.1 原码一位除法-加减交替法例 X = -0.1011,Y=0.1101,求[X/Y]原
解: [X]原=1.1011,[Y]原=0.1101
[Y]补=0.1101,[-Y]补=1.0011
商的符号 Qs= 1 0 = 1
所以 [X/Y]原 = 1.1101
余数=0.0111×2-4
例题之原码不恢复余数除法运算过程例题之原码不恢复余数除法运算过程原码加减交替法逻辑结构框图 原码加减交替法逻辑结构框图 2.4.1 原码一位除法-加减交替法2.4.1 原码一位除法-加减交替法R1为n位寄存器,除法开始前可存放被除数的低n位,运算结束后存放n位的商。每次上商应置于R1的最末位,因为它是由加法器的运算结果最高位来控制的,所以由∑f来设置。运算过程中,商要逐位左移,故R1寄存器具有左移功能。R0 保存被除数或余数,运算过程中也要左移,所以它也是一个具有左移功能的寄存器。运算中被除数(余数)的低位部分由R1串行移至R0。n+1步运算后,求得n+1位商,其中一位整数位,n位小数位,这n位小数位的数值存于R1寄存器中,而整数位在最后一次左移时丢掉,而商的符号Qf由Xs和Ys通过异或运算得到, 所以可用一个异或门求得Qf。2.5 定点运算器的组成2.5 定点运算器的组成运算器是数据的加工处理部件,是CPU的重要组成部分;
最基本的结构中包含:算术/逻辑运算单元、数据缓存寄存器、通用寄存器、多路转换器和数据总线等逻辑构件。2.5.1 逻辑运算2.5.1 逻辑运算计算机中除了进行加、减、乘、除等基本算术运算外,还可对两个或一个逻辑数进行逻辑运算。
所谓逻辑数是指不带符号的二进制数。利用逻辑运算可以进行两个数的比较,或者从某个数中选取某几位等操作。
主要有逻辑非(反)、逻辑加(或)、逻辑乘(与)、逻辑异或四种基本运算。2.5.2 多功能算术/逻辑运算单元2.5.2 多功能算术/逻辑运算单元全加器的表达式为:
Si = Ai Bi Ci
Ci+1 = AiBi + BiCi + AiCi
一位全加器内部逻辑图 加法运算及其加速方法加法运算及其加速方法在计算机技术发展过程中,人们提出了各种各样提高运算速度的方法:
1、从计算机系统结构角度,提出了并行处理、流水线等方式;
2、运算电路特别是用高速化的逻辑电路实现加法和移位功能;
3、运算方法和逻辑结构的高速化。加法运算及其加速方法加法运算及其加速方法1.一级分组先行进位法
(1)相邻4位加法器单元逻辑(第i-1, i-2, i-3 ,i-4位)
Ci=Gi+PiCi-1
Ci-1=Gi-1+Pi-1Ci-2
Ci-2=Gi-2+Pi-2Ci-3
Ci-3=Gi-3+Pi-3Ci-4
展开:
Ci-3=Gi-3+Pi-3Ci-4
Ci-2=Gi-2+Pi-2Gi-3+ Pi-2Pi-3 Ci-4
Ci-1=Gi-1+Pi-1 Gi-1+ Pi-1Pi-2Gi-3+ Pi-1 Pi-2Pi-3 Ci-4
Ci=Gi+PiGi-1+Pi Pi-1 Gi-2+Pi Pi-1 Pi-2Gi-3+ PiPi-1 Pi-2Pi-3 Ci-4
Ci中前四项记为GI*,最后一项的前四个因子记为PI*
则,Ci= GI*+ PI* Ci-4四位一组先行进位全加器四位一组先行进位全加器一级分组先行进位及组间行波进位一级分组先行进位及组间行波进位加法运算及其加速方法加法运算及其加速方法2. 二级分组先行进位法
仿一级分析法:
C3 = G3* + P3*(1Σ)
C7 = G7* + P7* G3*+ P7*P3*(1 Σ)
C11 = G11* + P11* G7*+ P11*P7* G3* + P11*P7*P3*(1 Σ)
C15 = G15* + P15* G11*+ P15* P11* G7*+ P15*P11* P7* G3*
+ P15*P11*P7*P3*(1 Σ)加法运算及其加速方法加法运算及其加速方法null总线是计算机内各部件之间传送信息的公用的一组连线。
由于计算机内部的主要工作过程是信息传送和加工的过程,因此在机器内部各部件之间的数据传送非常频繁。为了减少内部的传送线并便于控制,通常将一些寄存器之间数据传送的通路加以归并,组成总线结构,使不同来源的信息在此传输线上分时传送。2.5.3 内部总线内部总线和外部总线内部总线和外部总线根据总线所在位置,总线分为内部总线和外部总线两类。
内部总线是指CPU内各部件的连线
外部总线是指系统总线,即CPU与存储器、I/O系统之间的连线。单向总线和双向总线单向总线和双向总线按总线的逻辑结构来说,总线可分为单向传送总线和双向传送总线。
所谓单向总线,就是信息只能向一个方向传送
所谓双向总线,就是信息可以分两个方向传送,既可以发送数据,也可以接收数据。2.5.4 定点运算器的基本结构 2.5.4 定点运算器的基本结构 运算器包括ALU\阵列乘除器\寄存器\多路开关\三态缓冲器\数据总线等逻辑部件。
运算器的设计,主要是围绕ALU和寄存器同数据总线之间如何传送操作数和运算结果进行的。
在决定方案时,需要考虑数据传送的方便性和操作速度,在微型机和单片机中还要考虑在硅片上制作总线的工艺。2.6 浮点算术运算方法和浮点运算器2.6 浮点算术运算方法和浮点运算器 定点数的表示数据范围太小,引入浮点数和相应的浮点算术运算。
在浮点算术运算中,阶码和尾数都是定点数,阶码是定点整数,尾数是定点纯小数,浮点运算的规则可以归结为定点运算规则,需要增加一个阶码的定点运算及运算结果的规格化操作。
一台计算机究竞采用浮点运算还是定点运算,要由具体使用对象对计算机的实际要求来决定。
微机、某些专用机及某些小型机往往采用定点运算,其浮点运算可通过软件或增加扩展硬件来实现。
通用型计算机采用浮点运算或同时采用定点、浮点两种运算,由使用者自由选择。
为了使表示浮点数具有唯一性,使每一级计算的尾数能获得最大的有效数字,以及程序处理的方便性,往往把浮点数表示为规格化的浮点数,并采用规格化浮点数的运算。1. 浮点加减法运算 (1/7)1. 浮点加减法运算 (1/7) 设两个浮点数x和y分别为:
x=Sx·2Ex
y=Sy·2 Ey
其中,Ex、Ey分别是x和y的阶码,Sx和Sy是x、y的尾数。
假定它们都是规则化的数,即其尾数绝对值总小于1(用补码表示,允许为1),浮点加减运算的运算步骤如下:1. 浮点加减法运算 (2/7)1. 浮点加减法运算 (2/7)1. 对阶:小阶向大阶看齐
对阶的第一步是求阶差:△E =Ex-Ey
若△E =0,表示两数阶码相等,即Ex=Ey,不需要对阶
若△E >0,表明Ex>Ey
若△E <0,表明Ex
本文档为【计算机组成原理第二章课件】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。