计算机组成原理 第2章_运算方法和运算器
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
X=-1.0*2-128
2.1.3 字符与字符串的表示方式: ASCII码:P28 表2.1
2. 1.4 汉字的表示方式: 1) 输入码:用于汉字输入。数字编码、拼音码、字形编码。 2) 内码:用于汉字的存储、交换、检索等操作的机内代码,一般采用两个字节表示。 3) 字模码:是用点阵表示的汉字字形代码,它是汉字的输出形式,用于汉字的显示。
最大正数值=(215-1)10=(+32767)10 0 111 111 111 111 111
最小负数值=-(215-1)10=(-32767)10 1 111 111 111 111 111
(2)定点原码小数表示 最大正数值=(1-2-15)10=(+0.111...11)2 最小负数值=-(1-2-15)10=(-0.111...11)2
式中[X]移为机器数,X为真值。即将数值向X轴正方向平移2n 若阶码数值部分为5位,以 x表示真值,则
[X]移=25+X , 25>X≥-25 例如,当正数x=+10101时,[X]移=1,10101;当负数x=-10101时,[X]移=25+X=2510101=0,01011。移码中的逗号不是小数点,而是表示左边一位是符号位。显然,移码
20.59375=10100.10011 然后移动小数点,使其在第1,2位之间
10100.10011=1.010010011*24 e=4 于是得到:S=0,E=4+127=131=10000011, M=010010011 最后得到32位浮点数的二进制存储格式为: 0100 0001 1010 0100 1100 0000 0000 0000=(41A4C000)16
方法对两个指数大小的比较和对阶操作都比较方便,因为阶码域值大者其指数值也大。
采用这种方式时,将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定的偏移值
127(01111111),即E=e+127。
一个规格化的32位浮点数x的真值可表示为: x=(-1)s×(1.M) × 2E-127 e=E-127
[x]原的具体计算如下:
[x]补= 11111010
变反
10000101
末位加1 +
1
10000110
五、补码的性质:补码的最高位是符号位,在形式上同于原码,0表示正,1表示负。但
应注意,原码的符号位是人为地定义0正1负;而补码的符号位是通过模运算得到的,它
是数值的一部分,可直接参与运算。
[例3]以定点整数为例,用数轴形式说明原码、反码、补码表示范围和可能的数码组合 情况。
解:原码、反码、补码表示分别示于下图。与原码、反码不同,在补码表示中“0”只有 一种形式,且用补码表示负数时范围可到-2n。
11...1 10...01 10...0 00...0 00...01 01...1
-(2n-1)
-1
0
原码
+1 +(2n-1)
10...0 11...10 11...1 00...0 00...01 01...1
(2)最小正数 0 00 000 000 000 000 000 000 000 000 000 00
X=1.0*2-128 (3)最小负数 1 11 111 111 111 111 111 111 111 111 111 11
X=-[1+(1-2-23)]*2127 (4)最大负数 1 00 000 000 000 000 000 000 000 000 000 00
X0 X1 X2...Xn-1 Xn 符号 量值(尾数) 如果数X表示的是纯小数: 0≤|X|≤1-2-n 如果数X表示的是纯整数: 0≤|X|≤2n-1 2、浮点表示法,即小数点的位置是浮动的: N=Re.m 其中m称为浮点数的尾数,用定点小数表示。e称为浮点的指数,是一个整数,常称 为阶码。比例因子的基数R对二进计数制的机器是一个常数,一般规定R为2,8或16。因 此一个机器浮点数应当由阶码和尾数及其符号位组成:
=11111010
四、由补码求原码与真值:对于正数,原码与补码相同,其真值在略去正号后,形式上
与机器数相同;对于负数,保持符号位为1,其余各位变反末位加1,即得到原码表示,
将负数原码符号恢复为负号,即得到真值表示。
例:如[x]补=00000110,则[x]原=00000110, x=+110
如[x]补=11111010,则[x]原=10000110,所以 x=-110
解:因为n+1=5,所以n=4,
[x]原=0,0 1 1 0 [x]补=0,0 1 1 0
↑↑ ↑
x0 x1 … x4 显然,正数的原码与补码形式相同。
三、设机器字长8位并用定点整数表示,模为28,若x=-110,求[x]原,[x]补。 解:因为n+1=8,所以n=7,
[x]原=10000110 [x]补=M+x= 28 +(-110)=(100000000)2-110
-(2n-1)
-1
0
反码
+1 +(2n-1)
10...0 10...01 11...1 00...0 00...01 01...1
-2n
-(2n-1) -1 0 +1 +(2n-1)
补码
[例4]设机器字长16位,定点表示,尾数15位,数符1位,问: (1)定点原码整数表示时,最大正数是多少?最小负数是多少? (2)定点原码小数表示时,最大正数是多少?最小负数是多少? 解:(1)定点原码整数表示
[例1]若浮点数x的二进制存储格式为(41360000)16,求其32位浮点数的十进制值。 解:将16进制数展开后,可得二进制数格式为
0 100 0001 0011 0110 0000 0000 0000 0000 S 阶码(8位) 尾数(23位) 指数e=阶码-127=10000010-01111111=00000011=(3)10 包括隐藏位1的尾数1.M=1.011 0110 0000 0000 0000 0000=1.011011 于是有 x=(-1)s*1. M*2e =+(1.011011)*23=+1011.011=(11.375)10 [例2]将十进制数20.59375转换成32位浮点数的二进制格式来存储。 解:首先分别将整数和分数部分转换成二进制数:
n)上加1。
对定点整数,反码表示的定义是
[X]反=X
2n>X≥0
[X]反=(2n+1-1)+X
0≥X>-2n
若要一个负数变补码,只要将符号位置1,各位取Biblioteka Baidu,末位加1。
4) 移码:用于阶码的表示,两个移码容易比较大小,便于对阶。由于阶码是个n位的整
数,所以假定定点整数移码形式为x0x1x2...xn时,移码的定义是: [X]移=2n+X , 2n>X≥-2n
例如,X=+0.1001, 则[X]原=0.1001
- X= 0.1001, 则[X]原=1.1001
通常,对于正数X=+0.x1x2…xn ,则有: [X]原=0.x1x2...xn 对于负数X=-0.x1x2…xn ,则有: [X]原=1.x1x2...xn
对于0,原码机器中往往有“+0”、“-0”之分,故有两种形式:
2.1.5 校验码 奇、偶校验码:奇偶校验码是一种开销最小 ,能发现数据代码中一位出错情况的编码, 常用于存储器读写检查,或ASCII字符传送过程中的检查。它所约定的编码规律是让整个 校验码(包括有效信息和校验位)“1”的个数为奇数或为偶数。有效信息部分当然既可 能是奇性也可能是偶性,但可以配上一个为0或为1的校验位,使整个校验码能满足指定 的奇偶性要求。
3) 反码:将二进制数的各位数码0变为1,1变为0。它是为计算补码方便而引入.
对定点小数,反码表示的定义为
[X]反=X [X]反=(2-2-n)+X
其中n代表数的位数。
1>X≥0 0≥X>-1
一般情况下,对于正数X=+0.x1x2...xn,则有
[X]反=0.x1x2...xn 对于负数X=-0.x1x2...xn,则有
[X]补=X
1>X≥0
[X]补=2+X=2-|X| 0≥X>-1 (mod 2)
式中[X]补为机器数,X为真值。
例如,X=+0.1011,则[X]补=0.1011
X=-0.1011,则[X]补=10+X=10.0000-0.1011=1.0101
一般情况下,对于正数X=+0.x1x2...xn,则有: [X]补=0.x1x2...xn
阶符
阶码
数符
尾数
Es
E1E2...Em
Ms
M1M2...Mn
31 30
23 22
0
IEEE标准:
S E M 32位浮点数 32位浮点数中,S是浮点数的符号位,占1位,安排在最高位,S=0表示正数,S=1
表示负数。M是尾数,放在低位部分,占有23位,用小数表示,小数点放在尾数域的最
前面。E是阶码,占有8位,阶符采用隐含方式,即采用移码方法来表示正负指数。移码
思考题:
问:1、计算机中常用的数据表示格式? 答:定点格式, 浮点格式
2、按照IEEE754标准,32位浮点数的标准格式包含哪几部分?
31 30
23 22
0
S
E
M
数符 阶码
尾数
x=- 3、对于真值:
1.0110110×2100 如何用32位浮点数的标准格式表示?
SE
M
( 1111 0001 1011 0110 0000 0000 0000 0000 )2 =( C1B60000 )16
二、 数的机器码表示:
真值:书写用的数,机器码:机器内部使用的数
1) 原码:比较自然的表示法,最高位表示符号,0为正,1为负。
优
点:简单易懂。缺点:加减法运算复杂。
若定点小数的原码形式为x0.x1x2...xn,则原码表示的定义是
[X]原=X
1>X≥0
[X]原=1-X=1+|X| 0≥X>-1
式中[X]原是机器数,X是真值。
[+0]原=0.0000...0
[-0]原=1.0000...0
若定点整数的原码形式为x0x1x2...xn,则原码表示的定义是:
[X]原=X
2n>X≥0
[X]原=2n-X=2n+|X| 0≥X>-2n
2) 补码:加减法运算方便,减法可以转换为加法。
若定点小数的补码形式为 x0.x1x2...xn,则补码表示的定义是:
[例5]假设由S,E,M三个域组成的一个32位二进制字所表示的非零规格化浮点数x, 真值表示为:
x=(-1)s*(1.M)*2E-128 问:它所表示的规格化的最大正数、最小正数、最大负数、最小负数是多少? 解:
(1)最大正数 0 11 111 111 111 111 111 111 111 111 111 11 X=[1(1-2-23)]*2127
对于负数X=-0.x1x2...xn,则有: [X]补=10.00...0-0.x1x2...xn(mod 2)
对于0,在补码情况下,[+0]补=[-0]补=0.0000
(mod 2)
注意,0的补码表示只有一种形式。对2求补电路见图2.6
对于定点整数,补码表示的定义是:
[X]补=X
2n>X≥0
[X]补=2n+1+X=2n+1-|X| 0≥X>-2n (mod 2n+1)
第二章:运算方法和运算器
2.1 数据与文字的表示方法 2.2 定点加法、减法运算 2.3 定点乘法运算 2.4 定点除法运算 2.5 定点运算器的组成 2.6 浮点运算方法和浮点运算器
2.1 数据与文字的表示方法
一、计算机中常用的数据表示格式:定点格式, 浮点格式. 1、定点格式:约定机器中所有数据的小数点位置是固定不变的。将数据表示成定点纯小 数或定点纯整数。 假设用一个n+1位字来表示一个定点数X,在定点机中可表示为如下形 式:
中符号位x0表示的规律与原码、补码、反码相反。
一、计算:
1、x=23/128 2、x=-35/64 3、x+y=1010
[x]补= [x]补= [x+y]补=
[x]原= [x]原= [x+y]原=
4、x-y=-1101
[x-y]补=
[x-y]原=
二、设机器字长为5位,采用定点整数表示,x=+110,求[x]原, [x]补
其中尾数域所表示的值是1.M。因为规格化的浮点数的尾数域最左位(最高有效位)
总是1。故这一位经常不予存储,而认为隐藏在小数点的左边。
64位的浮点数中符号位1位,阶码域11位,尾数域52位,指数偏移值是1023。因此规
格化的64位浮点数x的真值为: x=(-1)s ×(1.M) × 2E-1023
e=E-1023
[X]反=1.x1x2...xn 对于0,有[+0]反=[-0]反之分:
[+0]反=0.00...0
[-0]反=1.11...1
我们比较反码与补码的公式
[X]反=2-2-n+X 可得到 [X]补=[X]反+2-n
[X]补=2+X
若要一个负数变补码,其方法是符号位置1,其余各位0变1,1变0,然后在最末位(2-
2.1.3 字符与字符串的表示方式: ASCII码:P28 表2.1
2. 1.4 汉字的表示方式: 1) 输入码:用于汉字输入。数字编码、拼音码、字形编码。 2) 内码:用于汉字的存储、交换、检索等操作的机内代码,一般采用两个字节表示。 3) 字模码:是用点阵表示的汉字字形代码,它是汉字的输出形式,用于汉字的显示。
最大正数值=(215-1)10=(+32767)10 0 111 111 111 111 111
最小负数值=-(215-1)10=(-32767)10 1 111 111 111 111 111
(2)定点原码小数表示 最大正数值=(1-2-15)10=(+0.111...11)2 最小负数值=-(1-2-15)10=(-0.111...11)2
式中[X]移为机器数,X为真值。即将数值向X轴正方向平移2n 若阶码数值部分为5位,以 x表示真值,则
[X]移=25+X , 25>X≥-25 例如,当正数x=+10101时,[X]移=1,10101;当负数x=-10101时,[X]移=25+X=2510101=0,01011。移码中的逗号不是小数点,而是表示左边一位是符号位。显然,移码
20.59375=10100.10011 然后移动小数点,使其在第1,2位之间
10100.10011=1.010010011*24 e=4 于是得到:S=0,E=4+127=131=10000011, M=010010011 最后得到32位浮点数的二进制存储格式为: 0100 0001 1010 0100 1100 0000 0000 0000=(41A4C000)16
方法对两个指数大小的比较和对阶操作都比较方便,因为阶码域值大者其指数值也大。
采用这种方式时,将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定的偏移值
127(01111111),即E=e+127。
一个规格化的32位浮点数x的真值可表示为: x=(-1)s×(1.M) × 2E-127 e=E-127
[x]原的具体计算如下:
[x]补= 11111010
变反
10000101
末位加1 +
1
10000110
五、补码的性质:补码的最高位是符号位,在形式上同于原码,0表示正,1表示负。但
应注意,原码的符号位是人为地定义0正1负;而补码的符号位是通过模运算得到的,它
是数值的一部分,可直接参与运算。
[例3]以定点整数为例,用数轴形式说明原码、反码、补码表示范围和可能的数码组合 情况。
解:原码、反码、补码表示分别示于下图。与原码、反码不同,在补码表示中“0”只有 一种形式,且用补码表示负数时范围可到-2n。
11...1 10...01 10...0 00...0 00...01 01...1
-(2n-1)
-1
0
原码
+1 +(2n-1)
10...0 11...10 11...1 00...0 00...01 01...1
(2)最小正数 0 00 000 000 000 000 000 000 000 000 000 00
X=1.0*2-128 (3)最小负数 1 11 111 111 111 111 111 111 111 111 111 11
X=-[1+(1-2-23)]*2127 (4)最大负数 1 00 000 000 000 000 000 000 000 000 000 00
X0 X1 X2...Xn-1 Xn 符号 量值(尾数) 如果数X表示的是纯小数: 0≤|X|≤1-2-n 如果数X表示的是纯整数: 0≤|X|≤2n-1 2、浮点表示法,即小数点的位置是浮动的: N=Re.m 其中m称为浮点数的尾数,用定点小数表示。e称为浮点的指数,是一个整数,常称 为阶码。比例因子的基数R对二进计数制的机器是一个常数,一般规定R为2,8或16。因 此一个机器浮点数应当由阶码和尾数及其符号位组成:
=11111010
四、由补码求原码与真值:对于正数,原码与补码相同,其真值在略去正号后,形式上
与机器数相同;对于负数,保持符号位为1,其余各位变反末位加1,即得到原码表示,
将负数原码符号恢复为负号,即得到真值表示。
例:如[x]补=00000110,则[x]原=00000110, x=+110
如[x]补=11111010,则[x]原=10000110,所以 x=-110
解:因为n+1=5,所以n=4,
[x]原=0,0 1 1 0 [x]补=0,0 1 1 0
↑↑ ↑
x0 x1 … x4 显然,正数的原码与补码形式相同。
三、设机器字长8位并用定点整数表示,模为28,若x=-110,求[x]原,[x]补。 解:因为n+1=8,所以n=7,
[x]原=10000110 [x]补=M+x= 28 +(-110)=(100000000)2-110
-(2n-1)
-1
0
反码
+1 +(2n-1)
10...0 10...01 11...1 00...0 00...01 01...1
-2n
-(2n-1) -1 0 +1 +(2n-1)
补码
[例4]设机器字长16位,定点表示,尾数15位,数符1位,问: (1)定点原码整数表示时,最大正数是多少?最小负数是多少? (2)定点原码小数表示时,最大正数是多少?最小负数是多少? 解:(1)定点原码整数表示
[例1]若浮点数x的二进制存储格式为(41360000)16,求其32位浮点数的十进制值。 解:将16进制数展开后,可得二进制数格式为
0 100 0001 0011 0110 0000 0000 0000 0000 S 阶码(8位) 尾数(23位) 指数e=阶码-127=10000010-01111111=00000011=(3)10 包括隐藏位1的尾数1.M=1.011 0110 0000 0000 0000 0000=1.011011 于是有 x=(-1)s*1. M*2e =+(1.011011)*23=+1011.011=(11.375)10 [例2]将十进制数20.59375转换成32位浮点数的二进制格式来存储。 解:首先分别将整数和分数部分转换成二进制数:
n)上加1。
对定点整数,反码表示的定义是
[X]反=X
2n>X≥0
[X]反=(2n+1-1)+X
0≥X>-2n
若要一个负数变补码,只要将符号位置1,各位取Biblioteka Baidu,末位加1。
4) 移码:用于阶码的表示,两个移码容易比较大小,便于对阶。由于阶码是个n位的整
数,所以假定定点整数移码形式为x0x1x2...xn时,移码的定义是: [X]移=2n+X , 2n>X≥-2n
例如,X=+0.1001, 则[X]原=0.1001
- X= 0.1001, 则[X]原=1.1001
通常,对于正数X=+0.x1x2…xn ,则有: [X]原=0.x1x2...xn 对于负数X=-0.x1x2…xn ,则有: [X]原=1.x1x2...xn
对于0,原码机器中往往有“+0”、“-0”之分,故有两种形式:
2.1.5 校验码 奇、偶校验码:奇偶校验码是一种开销最小 ,能发现数据代码中一位出错情况的编码, 常用于存储器读写检查,或ASCII字符传送过程中的检查。它所约定的编码规律是让整个 校验码(包括有效信息和校验位)“1”的个数为奇数或为偶数。有效信息部分当然既可 能是奇性也可能是偶性,但可以配上一个为0或为1的校验位,使整个校验码能满足指定 的奇偶性要求。
3) 反码:将二进制数的各位数码0变为1,1变为0。它是为计算补码方便而引入.
对定点小数,反码表示的定义为
[X]反=X [X]反=(2-2-n)+X
其中n代表数的位数。
1>X≥0 0≥X>-1
一般情况下,对于正数X=+0.x1x2...xn,则有
[X]反=0.x1x2...xn 对于负数X=-0.x1x2...xn,则有
[X]补=X
1>X≥0
[X]补=2+X=2-|X| 0≥X>-1 (mod 2)
式中[X]补为机器数,X为真值。
例如,X=+0.1011,则[X]补=0.1011
X=-0.1011,则[X]补=10+X=10.0000-0.1011=1.0101
一般情况下,对于正数X=+0.x1x2...xn,则有: [X]补=0.x1x2...xn
阶符
阶码
数符
尾数
Es
E1E2...Em
Ms
M1M2...Mn
31 30
23 22
0
IEEE标准:
S E M 32位浮点数 32位浮点数中,S是浮点数的符号位,占1位,安排在最高位,S=0表示正数,S=1
表示负数。M是尾数,放在低位部分,占有23位,用小数表示,小数点放在尾数域的最
前面。E是阶码,占有8位,阶符采用隐含方式,即采用移码方法来表示正负指数。移码
思考题:
问:1、计算机中常用的数据表示格式? 答:定点格式, 浮点格式
2、按照IEEE754标准,32位浮点数的标准格式包含哪几部分?
31 30
23 22
0
S
E
M
数符 阶码
尾数
x=- 3、对于真值:
1.0110110×2100 如何用32位浮点数的标准格式表示?
SE
M
( 1111 0001 1011 0110 0000 0000 0000 0000 )2 =( C1B60000 )16
二、 数的机器码表示:
真值:书写用的数,机器码:机器内部使用的数
1) 原码:比较自然的表示法,最高位表示符号,0为正,1为负。
优
点:简单易懂。缺点:加减法运算复杂。
若定点小数的原码形式为x0.x1x2...xn,则原码表示的定义是
[X]原=X
1>X≥0
[X]原=1-X=1+|X| 0≥X>-1
式中[X]原是机器数,X是真值。
[+0]原=0.0000...0
[-0]原=1.0000...0
若定点整数的原码形式为x0x1x2...xn,则原码表示的定义是:
[X]原=X
2n>X≥0
[X]原=2n-X=2n+|X| 0≥X>-2n
2) 补码:加减法运算方便,减法可以转换为加法。
若定点小数的补码形式为 x0.x1x2...xn,则补码表示的定义是:
[例5]假设由S,E,M三个域组成的一个32位二进制字所表示的非零规格化浮点数x, 真值表示为:
x=(-1)s*(1.M)*2E-128 问:它所表示的规格化的最大正数、最小正数、最大负数、最小负数是多少? 解:
(1)最大正数 0 11 111 111 111 111 111 111 111 111 111 11 X=[1(1-2-23)]*2127
对于负数X=-0.x1x2...xn,则有: [X]补=10.00...0-0.x1x2...xn(mod 2)
对于0,在补码情况下,[+0]补=[-0]补=0.0000
(mod 2)
注意,0的补码表示只有一种形式。对2求补电路见图2.6
对于定点整数,补码表示的定义是:
[X]补=X
2n>X≥0
[X]补=2n+1+X=2n+1-|X| 0≥X>-2n (mod 2n+1)
第二章:运算方法和运算器
2.1 数据与文字的表示方法 2.2 定点加法、减法运算 2.3 定点乘法运算 2.4 定点除法运算 2.5 定点运算器的组成 2.6 浮点运算方法和浮点运算器
2.1 数据与文字的表示方法
一、计算机中常用的数据表示格式:定点格式, 浮点格式. 1、定点格式:约定机器中所有数据的小数点位置是固定不变的。将数据表示成定点纯小 数或定点纯整数。 假设用一个n+1位字来表示一个定点数X,在定点机中可表示为如下形 式:
中符号位x0表示的规律与原码、补码、反码相反。
一、计算:
1、x=23/128 2、x=-35/64 3、x+y=1010
[x]补= [x]补= [x+y]补=
[x]原= [x]原= [x+y]原=
4、x-y=-1101
[x-y]补=
[x-y]原=
二、设机器字长为5位,采用定点整数表示,x=+110,求[x]原, [x]补
其中尾数域所表示的值是1.M。因为规格化的浮点数的尾数域最左位(最高有效位)
总是1。故这一位经常不予存储,而认为隐藏在小数点的左边。
64位的浮点数中符号位1位,阶码域11位,尾数域52位,指数偏移值是1023。因此规
格化的64位浮点数x的真值为: x=(-1)s ×(1.M) × 2E-1023
e=E-1023
[X]反=1.x1x2...xn 对于0,有[+0]反=[-0]反之分:
[+0]反=0.00...0
[-0]反=1.11...1
我们比较反码与补码的公式
[X]反=2-2-n+X 可得到 [X]补=[X]反+2-n
[X]补=2+X
若要一个负数变补码,其方法是符号位置1,其余各位0变1,1变0,然后在最末位(2-