(4)-计算机组成-6计算机组成与结构_第1页
(4)-计算机组成-6计算机组成与结构_第2页
(4)-计算机组成-6计算机组成与结构_第3页
(4)-计算机组成-6计算机组成与结构_第4页
(4)-计算机组成-6计算机组成与结构_第5页
已阅读5页,还剩116页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章计算机的运算方法6.1无符号数和有符号数6.3定点运算6.2数的定点表示和浮点表示6.4浮点四则运算6.5算术逻辑单元2024/1/111青岛大学6.1无符号数和有符号数一、无符号数二、有符号数1、机器数与真值2、原码表示法3、补码表示法4、反码表示法5、移码表示法2024/1/11哈尔滨工业大学2定义特点举例机器数与真值的转换不同机器数形式之间的转化机器数表示的范围与其字长有关6.1无符号数和有符号数一、无符号数寄存器的位数反映无符号数的表示范围8位0~25516位0~655352024/1/113青岛大学带符号的数符号数字化的数+0.10110

1011小数点的位置+11000

1100小数点的位置–

11001

1100小数点的位置–0.10111

1011小数点的位置真值机器数1.机器数与真值二、有符号数6.12.原码表示法带符号的绝对值表示(1)定义整数x

为真值n

为整数的位数如x=+1110[x]原

=0,1110[x]原

=24+1110=1,1110x=

1110[x]原=0,x2n

x

≥02n

x0≥

x

>2n用逗号

将符号位和数值部分隔开6.12024/1/115青岛大学小数x

为真值如x=+0.1101[x]原

=0.1101x=0.1101[x]原

=1(0.1101)=1.1101x1>

x

≥0[x]原=1–x0≥

x

>1x=0.1000000[x]原

=1(0.1000000)=1.1000000x=

+0.1000000[x]原

=0.1000000用小数点

将符号位和数值部分隔开用小数点

将符号位和数值部分隔开6.12024/1/116青岛大学(2)举例例6.1已知[x]原=1.0011求x解:例6.2已知[x]原=1,1100求x解:x=1

[x]原=1

1.0011=0.0011x=24

[x]原=100001,1100=1100–

–0.00111100由定义得由定义得6.12024/1/117青岛大学例6.4

求x=0的原码解:设x=+

0.0000例6.3已知[x]原=0.1101求x解:∴

x

=+0.1101同理,对于整数[+0

]原=0,0000[+

0.0000]原=0.0000x=

0.0000[

0.0000]原=1.0000[0

]原=1,0000∴[+

0]原

[

0]原

根据定义∵[x]原=0.11016.12024/1/118青岛大学原码的特点:简单、直观但是用原码作加法时,会出现如下问题:能否只作加法?

找到一个与负数等价的正数来代替这个负数就可使减加加法正正加加法正负加法负正加法负负减减加

要求

数1数2

实际操作结果符号正可正可负可正可负负6.12024/1/119青岛大学-123(1)补的概念时钟逆时针-363顺时针+96153.补码表示法可见3可用+9代替记作3≡+9(mod12)同理4≡+8(mod12)5≡+7(mod12)

时钟以

12为模减法加法6.1称+9是3以12为模的补数2024/1/1110青岛大学结论一个负数加上“模”即得该负数的补数一个正数和一个负数互为补数时它们绝对值之和即为模数

计数器(模16)–101110110000+010110111000010110000?可见1011可用+0101代替同理0110.1001自然去掉6.1记作1011(mod24)≡+0101(mod23)≡+101(mod2)≡+1.0111+

0101(mod24)≡1011(mod24)(2)正数的补数即为其本身+10000+10000两个互为补数的数+0101+10101≡分别加上模结果仍互为补数∴+0101≡+0101+010124+1

–10111,0101用逗号

将符号位和数值部分隔开丢掉10110,1,??1011(mod24)可见?+01010101010110110101+(mod24+1)6.1100000=(3)补码定义整数x

为真值n

为整数的位数[x]补=0,x2n

x

≥02n+1+x0

x

≥2n(mod2n+1)如x=+1010[x]补=27+1+(1011000)=[x]补=0,1010x=10110001,0101000用逗号

将符号位和数值部分隔开6.11011000100000000小数x

为真值x=+0.1110[x]补=x1>

x

≥02+

x

0>

x

≥1(mod2)如[x]补=0.1110x=0.11000001.0100000[x]补=2

+

(0.1100000)=用小数点将符号位和数值部分隔开6.10.110000010.00000002024/1/1114青岛大学(4)求补码的快捷方式=100000=1,011010101+1=1,0110又[x]原=1,1010则[x]补=24+11010=11111+11010=1111110101010当真值为负

时,补码

可用原码除符号位外每位取反,末位加1求得6.1+1设x=1010时2024/1/1115青岛大学(5)举例解:x=+0.0001解:由定义得x=[x]补–2=1.0001–10.0000[x]原=1.1111例6.6已知[x]补=1.0001求x[x]补

[x]原

?由定义得6.1例6.5已知[x]补=0.0001求x∴x=0.1111

–=0.1111

–2024/1/1116青岛大学例6.7解:x=[x]补–24+1

=1,1110–100000[x]原=1,0010当真值为负

时,原码

可用补码除符号位外每位取反,末位加1求得[x]补

[x]原

?∴x=0010=0010求x已知[x]补=1,1110由定义得6.12024/1/1117青岛大学真值0,10001101,01110100.11101.00100.00000.00001.00000,10001101,10001100.11101.11100.00001.0000不能表示练习求下列真值的补码[1]补

=2+x=10.00001.0000=1.0000[+0]补=[0]补由小数补码定义=1000110[x]补[x]原6.1x=+70x=0.1110x=0.0000x=70x=0.1110x=0.0000x=1.0000=1000110[x]补=x

1>

x

≥02+

x0>

x

≥1(mod2)184.反码表示法(1)定义整数[x]反=0,x2n>x≥0(2n+1–1)+x0≥x>2n(mod2n+1

1)如x

=+1101[x]反=0,1101=1,0010x=1101[x]反=(24+11)1101=111111101用逗号

将符号位和数值部分隔开x

为真值n

为整数的位数6.119小数x

=+0.1101[x]反=

0.1101x=0.1010[x]反=(22-4)

0.1010=1.1111

0.1010=1.0101如[x]反=x1>x≥0(2–2-n)+x0≥x>1(mod22-n)用小数点

将符号位和数值部分隔开x

为真值6.1n为小数的位数2024/1/1120青岛大学(2)举例例6.10

求0的反码设x=+

0.0000[+0.0000]反=0.0000解:同理,对于整数[+0]反=0,0000例6.9已知[x]反=1,1110求x例6.8已知[x]反=0,1110求x解:由定义得x=+1110解:6.1=1,111011111=0001由定义得x=[x]反(24+11)x=

0.0000[

0.0000]反=1.1111[0]反=1,1111∴[+0]反≠[0]反

21三种机器数的小结

对于正数,原码=补码=反码

对于负数,符号位为1,其数值部分原码除符号位外每位取反末位加1补码原码除符号位外每位取反反码

最高位为符号位,书写上用“,”(整数)或“.”(小数)将数值部分和符号位隔开6.12024/1/1122青岛大学例6.11000000000000000100000010…011111111000000010000001111111011111111011111111…128129-0-1-128-127-127-126二进制代码无符号数对应的真值原码对应的真值补码对应的真值反码对应的真值012127…253254255…-125-126-127…-3-2-1…-2-1-0…+0+1+2+127…+0+1+2+127…+0+1+2+127…6.1+0设机器数字长为8位(其中1位为符号位)对于整数,当其分别代表无符号数、原码、补码和反码时,对应的真值范围各为多少?例6.12解:已知[y]补求[y]补<Ⅰ>[y]补=0.y1

y2

yn…y

=0.

y1y2

yn…y=0.y1

y2

yn…[y]补=1.y1

y2

yn+2-n…<Ⅱ>[y]补=1.y1

y2

yn…[y]原

=1.y1y2

yn+2-n…

y

=(0.y1y2

yn

+2-n)…

y

=0.y1y2

yn+2-n…[y]补

=0.y1

y2

yn+2-n…设[y]补=y0.y1y2

yn…6.1每位取反,即得[y]补[y]补连同符号位在内,末位加1每位取反,即得[y]补[y]补连同符号位在内,末位加15.移码表示法补码表示很难直接判断其真值大小如十进制x=+21x=–21x=

+31x=–31x+25+10101+100000+11111+10000010101+10000011111+100000大大错错大大正确正确0,101011,010110,111111,00001+10101–

10101+11111–

11111=110101=001011=111111=000001二进制补码6.1(1)移码定义x

为真值,n

为整数的位数移码在数轴上的表示[x]移码2n+1–12n2n

–1–2n00真值如x=10100[x]移=25+10100用逗号

将符号位和数值部分隔开x=–10100[x]移=25

–10100[x]移=2n+x(2n>x

≥2n)=1,10100=0,011006.1(2)移码和补码的比较设x=+1100100[x]移=27+1100100[x]补=0,1100100设x=–1100100[x]移=27

–1100100[x]补=1,0011100补码与移码只差一个符号位=1,1100100=0,001110010016.12024/1/1127青岛大学-100000-11111-11110-00001±00000+00001+00010+11110+11111……真值x(n

=

5)[x]补[x]移[x]移对应的十进制整数(3)真值、补码和移码的对照表……012313233346263……000000000010000001011111100000100001100010111110111111……011111011110000010000001000000111111100010100001100000-100000±00000+111110000001111110000001000006.1

当x=0时[+0]移=25+0

当n=5时可见,最小真值的移码为全0(4)移码的特点用移码表示浮点数的阶码能方便地判断浮点数的阶码大小=1,00000=1,00000=0000006.1[0]移=250∴[+0]移=[0]移[

100000]移=25

100000最小的真值为25=

1000002024/1/11第6章计算机的运算方法6.1无符号数和有符号数6.3定点运算6.2数的定点表示和浮点表示6.4浮点四则运算6.5算术逻辑单元2024/1/116.2数的定点表示和浮点表示一、定点表示二、浮点表示1.浮点数的表示形式2.浮点数的表示范围3.浮点数的规格化形式4.浮点数的规格化三、举例四、IEEE754标准2024/1/11哈尔滨工业大学316.2数的定点表示和浮点表示小数点按约定方式标出一、定点表示Sf

S1S2

Sn…数符数值部分小数点位置Sf

S1S2

Sn…数符数值部分小数点位置或定点机小数定点机整数定点机原码补码反码–(1–2-n)~+(1–2-n)–(2n

–1)~+(2n

–1)–1~+(1–2-n)–2n~+(2n

–1)–(1–2-n)~+(1–2-n)–(2n

1)~+(2n

–1)6.2数的定点表示和浮点表示一、定点表示二、浮点表示1.浮点数的表示形式2.浮点数的表示范围3.浮点数的规格化形式4.浮点数的规格化三、举例四、IEEE754标准2024/1/11哈尔滨工业大学33二、浮点表示为什么在计算机中要引入浮点数表示?浮点表示的格式是什么?尾数和阶码的基值必须是2吗?基值的影响?表数范围与精度和哪些因素有关?为什么要引入规格化表示?目前浮点数表示格式的标准是什么?2024/1/11哈尔滨工业大学34二、浮点表示为什么要引入浮点数表示编程困难,程序员要调节小数点的位置;数的表示范围小,为了能表示两个大小相差很大的数据,需要很长的机器字长;例如:太阳的质量是0.2*1034克,一个电子的质量大约为0.9*10-27克,两者的差距为1061以上,若用定点数据表示:2x>1061,解的,x>203位。数据存储单元的利用率往往很低。二、浮点表示N=S×rj浮点数的一般形式S

尾数j

阶码r

尾数的基值计算机中r

取2、4、8、16等当r=2N=11.0101=0.110101×210=1.10101×21=1101.01×2-10

=0.00110101×2100

计算机中S

小数、可正可负j

整数、可正可负

规格化数二进制表示6.22024/1/11361.浮点数的表示形式Sf

代表浮点数的符号n

其位数反映浮点数的精度m

其位数反映浮点数的表示范围jf

和m

共同表示小数点的实际位置6.2jf

j1

j2

jm

Sf

S1S2

Sn

……j

阶码S

尾数阶符数符阶码的数值部分尾数的数值部分小数点位置2024/1/1137青岛大学2.浮点数的表示范围–2(2m–1)×(1

2–n)–2–(2m–1)×2–n2(2m–1)×(1

2–n)2–(2m–1)×2–n最小负数最大负数最大正数最小正数负数区正数区下溢0上溢上溢–215

×(1

2-10)

–2-15

×2-10

215

×(1

2-10)

设m=4

n=10上溢阶码>最大阶码下溢阶码<最小阶码按机器零

处理6.22-15

×2-10

2024/1/1138练习

设机器数字长为24位,欲表示±3万的十进制数,试问在保证数的最大精度的前提下,除阶符、数符各取1位外,阶码、尾数各取几位?满足最大精度可取

m=4,n=18解:…m=4,5,6,如果是定点数15位二进制数可反映±3万之间的十进制数∴215

=32768214

=16384∵6.2215×0.×××

×××n位…2024/1/1139青岛大学3.浮点数的规格化形式r=2尾数最高位为1r=4尾数最高2位不全为0r=8尾数最高3位不全为04.浮点数的规格化r=2左规尾数左移1位,阶码减1右规尾数右移1位,阶码加1r=4左规尾数左移2位,阶码减1右规尾数右移2位,阶码加1r=8左规尾数左移3位,阶码减1右规尾数右移3位,阶码加1基数r

越大,可表示的浮点数的范围越大基数不同,浮点数的规格化形式不同基数r

越大,浮点数的精度降低6.240例如:最大正数=215×(1–2–10)

2+1111×0.111111111110个1最小正数最大负数最小负数=2–15×2–1

=–215×(1–2–10)

=2–16=–2–15×2–1

=–2–162-1111×0.10000000009个02-1111×(–0.1000000000)9个02+1111×(–0.1111111111)10个1设m=4,n=10,r=2尾数规格化后的浮点数表示范围6.22024/1/11三、举例例6.13将+写成二进制定点数、浮点数及在定点机和浮点机中的机器数形式。其中数值部分均取10位,数符取1位,浮点数阶码取5位(含1位阶符),尾数规格化。19128解:设

x=+19128二进制形式定点表示浮点规格化形式[x]原=1,0010;0.1001100000[x]补=1,1110;0.1001100000[x]反=1,1101;0.1001100000定点机中浮点机中000x=0.0010011x=0.0010011x=0.1001100000×2-10[x]原=[x]补=[x]反=0.00100110006.22024/1/11x=–1110100000例6.14将–58表示成二进制定点数和浮点数,并写出它在定点机和浮点机中的三种机器数及阶码为移码、尾数为补码的形式(其他要求同上例)。解:设

x=–58二进制形式定点表示浮点规格化形式[x]原=1,0000111010[x]补=1,1111000110[x]反=1,1111000101[x]原=0,0110;1.1110100000[x]补=0,0110;1.0001100000[x]反=0,0110;1.0001011111定点机中浮点机中[x]阶移、尾补=1,0110;1.0001100000x=–111010x=–(0.1110100000)×21106.2

当浮点数尾数为0时,不论其阶码为何值

按机器零处理机器零

当浮点数阶码等于或小于它所表示的最小数

时,不论尾数为何值,按机器零处理如m=4n=10当阶码用移码,尾数用补码表示时,机器零为0,0000;0.000

1,0000;×.×××

…×,××××;0.000

…有利于机器中“判0”电路的实现当阶码和尾数都用补码表示时,机器零为6.2(阶码=16)44四、IEEE754标准短实数长实数临时实数符号位S

阶码尾数总位数1

8233211152641156480S

阶码(含阶符)尾数数符小数点位置尾数为规格化表示非“0”的有效位最高位为“1”(隐含)6.22024/1/1145青岛大学第6章计算机的运算方法6.1无符号数和有符号数6.3定点运算6.2数的定点表示和浮点表示6.4浮点四则运算6.5算术逻辑单元2024/1/1146青岛大学6.3定点运算一、移位运算二、加减法运算三、乘法运算四、除法运算2024/1/11哈尔滨工业大学476.3定点运算一、移位运算1、移位运算的数学意义2、算术移位规则3、算术移位的硬件实现4、算术移位与逻辑移位的区别2024/1/11哈尔滨工业大学486.3定点运算一、移位运算1.移位的意义15m=1500cm小数点右移2位机器用语15相对于小数点左移2位(小数点不动)..左移绝对值扩大右移绝对值缩小在计算机中,移位与加减配合,能够实现乘除运算2.算术移位规则1右移添1左移

添00反码补码原码负数0原码、补码、反码正数添补代码码制符号位不变6.32024/1/1150青岛大学x=-0.x1x2…xk100…000[x]补=1.x1x2…xk100…000例6.16设机器数字长为8位(含1位符号位),写出A=+26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。解:A=+26则[A]原=[A]补=[A]反=0,0011010+

60,0000110+130,0001101+1040,1101000+

520,0110100+260,0011010移位前[A]原=[A]补=[A]反对应的真值机器数移位操作=+110106.3左移一位左移两位右移一位右移两位例6.17设机器数字长为8位(含1位符号位),写出A=–26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。解:A=–26–61,0000110–131,0001101–1041,1101000–521,0110100–261,0011010移位前对应的真值机器数移位操作原码=–110106.3左移一位左移两位右移一位右移两位2024/1/1152青岛大学–61,1111001–131,1110010–1041,0010111–521,1001011–261,1100101移位前对应的真值机器数移位操作–71,1111001–131,1110011–1041,0011000–521,1001100–261,1100110移位前对应的真值机器数移位操作补码反码6.3左移一位左移两位右移一位右移两位左移一位左移两位右移一位右移两位3.算术移位的硬件实现(a)真值为正(b)负数的原码(c)负数的补码(d)负数的反码00010丢1丢1出错影响精度出错影响精度正确影响精度正确正确6.32024/1/1154青岛大学4.算术移位和逻辑移位的区别算术移位有符号数的移位逻辑移位无符号数的移位逻辑左移逻辑右移低位添0,高位移丢高位添0,低位移丢例如

01010011逻辑左移10100110逻辑右移01011001算术左移算术右移0010011011011001(补码)高位1移丢010100110Cy0101001100101100106.36.3定点运算一、移位运算1、移位运算的数学意义2、算术移位规则3、算术移位的硬件实现4、算术移位与逻辑移位的区别2024/1/11哈尔滨工业大学566.3定点运算一、移位运算二、加减法运算三、乘法运算四、除法运算2024/1/11哈尔滨工业大学57但是用原码作加法时,会出现如下问题:能否只作加法?

找到一个与负数等价的正数来代替这个负数就可使减加加法正正加加法正负加法负正加法负负减减加

要求

数1数2

实际操作结果符号正可正可负可正可负负2024/1/1158青岛大学6.3定点运算二、加减法运算1、补码加减法运算的公式2、举例3、溢出的判断4、补码加减法的硬件配置2024/1/11哈尔滨工业大学59二、加减法运算1.补码加减运算公式(1)加法(2)减法整数

[A]补+[B]补=[A+B]补(mod2n+1)小数[A]补+[B]补=[A+B]补(mod2)A–B=A+(–B

)整数[A

–B]补=[A+(–B

)]补=[A]补+[

B]补(mod2n+1)小数[A

–B]补=[A+(–B

)]补(mod2)连同符号位一起相加,符号位产生的进位自然丢掉=[A]补+[

B]补6.32024/1/11青岛大学2.举例解:[A]补[B]补[A]补+[B]补+=0.1011=1.1011=10.0110=[A+B]补验证例6.18设A=0.1011,B=–

0.0101求[A+B]补0.1011–0.01010.0110∴A+B

=0.0110[A]补[B]补[A]补+[B]补+=1,0111=1,1011=11,0010=[A+B]补验证–1001–1110–0101+例6.19设A=–9,B=–5求[A+B]补解:∴A+B

=–11106.361例6.20设机器数字长为8位(含1位符号位)且A=15,B=24,用补码求A

–B解:A=15=0001111B=24=0011000[A]补+[–

B]补+[A]补=0,0001111[–

B]补=1,1101000=1,1110111=[A

B]补[B]补=0,0011000练习1设x=y=,用补码求x+y9161116x+y=–0.1100=1216–练习2设机器数字长为8位(含1位符号位)且A=–97,B=+41,用补码求A

BA

–B=+1110110=+118∴A

–B=–1001=–9错错6.32024/1/11623.溢出判断(1)一位符号位判溢出参加操作的两个数(减法时即为被减数和“求补”以后的减数)符号相同,其结果的符号与原操作数的符号不同,即为溢出硬件实现最高有效位的进位符号位的进位=1如10=101=1有

溢出00=011=0无

溢出6.3溢出63(2)两位符号位判溢出[x]补'

=

x1>x≥04+x0>x≥–1(mod4)[x]补'+[y]补'=[x+y]补'(mod4)[x

–y]补'=[x]补'+[–

y]补'(mod4)结果的双符号位相同未溢出结果的双符号位不同溢出最高符号位代表其真正的符号00.×××××11.×××××10.×××××01.×××××00,×××××11,×××××10,×××××01,×××××6.3644.补码加减法的硬件配置V0

A

nGAGS

加法器(n+1)溢出判断求补控制逻辑0

X

nA、X均n+1位用减法标记GS

控制求补逻辑6.32024/1/1165青岛大学6.3定点运算一、移位运算二、加减法运算三、乘法运算四、除法运算2024/1/11哈尔滨工业大学666.3定点运算三、乘法运算计算机中怎么做二进制的乘法运算呢可以分析一下笔算乘法是怎么做的笔算乘法的分析笔算乘法的改进原码的乘法运算补码的乘法运算2024/1/11哈尔滨工业大学67三、乘法运算1.分析笔算乘法A=–0.1101B=0.1011A×B=–0.100011110.11010.101111011101000011010.10001111符号位单独处理乘数的某一位决定是否加被乘数4个位积一起相加乘积的位数扩大一倍×乘积的符号心算求得

?6.32024/1/1168青岛大学2.笔算乘法改进A

•B=A

•0.1011=0.1A+0.00A+0.001A+0.0001A=0.1A+0.00A+0.001(A+0.1A)=0.1A+0.01[0•

A+0.1(A+0.1A)]=0.1{A+0.1[0•

A+0.1(A+0.1A)]}=2-1{1•A+2-1[0

A+2-1(1•A+2-1(1•A+0))]}①②⑧第一步被乘数A

+0第二步右移一位,得新的部分积第八步右移一位,得结果③第三步部分积

+

被乘数…右移一位6.33.改进后的笔算乘法过程(竖式)0.00000.11010.11010.11010.00000.1101初态,部分积=0乘数为1,加被乘数乘数为1,加被乘数乘数为0,加01.001110.1001111.0001111乘数为1,加被乘数0.100011111,得结果1011=0.01101,形成新的部分积1101=0.10011,形成新的部分积1110=0.01001,形成新的部分积1111=部分积乘数说明6.3++++70小结

被乘数只与部分积的高位相加

由乘数的末位决定被乘数是否与原部分积相加,然后1位形成新的部分积,同时乘数1

位(末位移丢),空出高位存放部分积的低位。硬件3

个寄存器,其中2个具有移位功能1

个全加器6.3

乘法

运算可用加和移位实现

n=4,加4次,移4次2024/1/1171青岛大学6.3定点运算三、乘法运算计算机中怎么做二进制的乘法运算呢可以分析一下笔算乘法是怎么做的笔算乘法的分析笔算乘法的改进原码的乘法运算补码的乘法运算2024/1/11哈尔滨工业大学72运算规则递推公式举例硬件配置4.原码乘法(1)原码一位乘运算规则以小数为例设[x]原=x0.x1x2

xn…[y]原=y0.y1y2

yn…=(x0

y0).x*y*[x

•y]原=(x0

y0).(0.x1x2

xn)(0.y1y2

yn)……式中x*=0.x1x2

xn

为x

的绝对值…y*=0.y1y2

yn

为y

的绝对值…乘积的符号位单独处理x0

y0数值部分为绝对值相乘x*•

y*6.373(2)原码一位乘递推公式x*•

y*=x*(0.y1y2

yn)…=x*(y12-1+y22-2++yn2-n)…=2-1(y1x*+2-1(y2x*+2-1(ynx*+0)))……z1znz0=0z1=2-1(ynx*+z0)z2=2-1(yn-1x*+z1)zn=2-1(y1x*+zn-1)……z06.32024/1/1174青岛大学例6.21已知x=–0.1110y=0.1101求[x•y]原解:6.3数值部分的运算0.00000.11100.11100.00000.11100.1110部分积初态z0=0部分积乘数说明0.011101.0001101.01101100.101101101,得

z4逻辑右移1101=0.01111,得

z10110=0.00111,得

z21011=0.10001,得

z31101=逻辑右移逻辑右移逻辑右移+++++x*+0+x*+x*75②数值部分按绝对值相乘①乘积的符号位

x0

y0=10=1x*•

y*=0.10110110则[x

y]原

=1.10110110特点绝对值运算逻辑移位例6.21结果用移位的次数判断乘法是否结束6.32024/1/1176青岛大学(3)原码一位乘的硬件配置A、X、Q均n+1位移位和加受末位乘数控制0

An加法器控制门0

Xn

移位和加控制计数器CSGM0Qn右移6.36.3定点运算一、移位运算二、加减法运算三、乘法运算四、除法运算2024/1/11哈尔滨工业大学786.3定点运算三、乘法运算1.分析笔算乘法2.笔算乘法的改进3.改进后的乘法笔算过程4.原码一位乘5.补码一位乘2024/1/11哈尔滨工业大学795.补码乘法设被乘数乘数[x]补=x0.x1x2

xn…[y]补=y0.y1y2

yn…①被乘数任意,乘数为正与原码乘相似但加

和移位

按补码规则运算乘积的符号自然形成②被乘数任意,乘数为负乘数[y]补,去掉符号位,操作同①

最后加[–x]补,校正(1)补码一位乘运算规则6.3以小数为例2024/1/1180青岛大学③Booth算法(被乘数、乘数符号任意)设[x]补=x0.x1x2

xn[y]补=y0.y1y2

yn……[x

·y]补=[x]补(0.y1

yn)–[x]补

·y0…=[x]补(y12-1+y22-2++yn2-n)–[x]补

·y0…=[x]补(–y0+y1

2-1+y22-2++yn2-n)…=[x]补[–y0+(y1–

y12-1)+(y22-1–y22-2)++(yn2-(n-1)–yn2-n)]…=[x]补[(y1–y0)+(y2–y1)2-1++(yn–yn-1)2-(n-1)+(0

–yn)2-n)]…y'1

2-1++…y'n

2-n–[x]补=+[–x]补

2-1=20

–2-12-2=2-1

–2-22-12-2=[x]补[(y1–y0)+(y2–y1)2-1++(yn+1–yn)2-n]…6.3

附加位

yn+1=y’0[x]补+2-1(y’1[x]补+2-1(y’2[x]补+2-1(y’n[x]补

+0)))……④Booth算法递推公式[z0]补=0[z1]补=2-1{(yn+1–yn)[x]补+[z0]补}yn+1=0[zn]补=2-1{(y2–y1)[x]补+[zn-1]补}…[x

·

y]补=(y1–y0)[x]补+[zn]补最后一步不移位如何实现

+(yi+1–yi)[x]补

?000110111+[x]补

1+[–x]补

1101-106.3yi

yi+1操作yi+1–yi2024/1/1182青岛大学例6.23已知x=+0.0011y=–0.1011求[x·y]补解:00.000011.110111.110100.001111.110100.001111.11011.0101000.0001111.11011100.000111111.11011111

[x]补=0.0011

[y]补=1.0101[–x]补=1.1101+[–x]补11.111011

01011+[x]补00.00001110101+[–x]补11.1110111101100.00001111101+[–x]补+[x]补∴

[x·y]补=1.11011111最后一步不移位6.3补码右移补码右移补码右移补码右移+++++2024/1/1183青岛大学(2)Booth算法的硬件配置A、X、Q均n+2位移位和加法操作受乘数末两位控制6.30An+1n+2位加法器控制门0Xn+10Qn

n+1移位和加控制逻辑计数器CGM00,110110右移2024/1/1184青岛大学乘法小结原码乘符号位单独处理补码乘符号位自然形成原码乘去掉符号位运算即为无符号数乘法不同的乘法运算需有不同的硬件支持整数乘法与小数乘法过程完全相同可用逗号

代替小数点6.32024/1/1185青岛大学6.3定点运算一、移位运算二、加减法运算三、乘法运算四、除法运算2024/1/11哈尔滨工业大学866.3定点运算四、除法运算1.笔算除法是怎么做的2.如何用计算机硬件来模拟笔算除法的过程恢复余数法加减交替法2024/1/11哈尔滨工业大学87四、除法运算1.分析笔算除法x=–0.1011y=0.1101求x÷y0.10110.1101⌒0.011010.010010.0011010.0001010.000011010.000001111商符单独处理心算上商余数不动低位补“0”减右移一位的除数上商位置不固定x÷y=–0.1101余数0.00000111商符心算求得00.101000

???6.32024/1/1188青岛大学2.笔算除法和机器除法的比较笔算除法机器除法商符单独处理心算上商符号位异或形成|x|–|y|>0上商1|x|–|y|<0上商0余数不动

低位补“0”减右移一位的除数2倍字长加法器上商位置不固定余数左移一位

低位补“0”减

除数1倍字长加法器在寄存器最末位上商6.32024/1/1189青岛大学3.原码除法以小数为例[x]原=x0.x1x2

xn…[

y]原=y0.y1y2

yn…式中

x*=0.x1x2

xn

为x

的绝对值

y*=0.y1y2

yn

为y

的绝对值……数值部分为绝对值相除x*y*被除数不等于0除数不能为0小数定点除法x*<y*整数定点除法x*>

y*商的符号位单独处理

x0

y0[]原=(x0

y0).xyx*y*约定6.32024/1/1190(1)恢复余数法0.10111.00111.00111.00110.0000+[–y*]补01.1110余数为负,上商00.1101恢复余数00.1001余数为正,上商1+[–y*]补1.0110011.0010011+[–y*]补解:被除数(余数)商说明[x]原=1.1011[y]原

=1.1101①x0

y0=1

1=0②x=–0.1011

y=–0.1101求[]原

xy例6.2410.1011恢复后的余数0+[y*]补[y*]补=0.1101[–y*]补

=1.0011逻辑左移逻辑左移6.3++++910.010101余数为正,上商1被除数(余数)商说明1.00110.11011.001110.1010011+[–y*]补1.1101011

余数为负,上商0恢复余数1.010001101+[–y*]补0.01110110

余数为正,上商1=0.1101x*y*∴[]原xy=0.1101上商5次第一次上商判溢出余数为正上商1余数为负上商0,恢复余数移4次100.1010恢复后的余数011

01+[y*]补逻辑左移6.3逻辑左移+++2024/1/1192(2)不恢复余数法余数Ri>0上商“1”,2Ri

–y*余数Ri<0上商“0”,

Ri

+y*恢复余数2(Ri+y*)–y*=2Ri

+y*加减交替恢复余数法运算规则不恢复余数法运算规则上商“1”2Ri–y*

上商“0”2Ri+y*(加减交替法)6.32024/1/1193青岛大学x=–0.1011y=–0.1101求[]原xy解:例6.250.10111.00110.11011.00111.00110.11010.0000+[–y*]补01.1110余数为负,上商01.110001+[y*]补00.1001余数为正,上商1+[–y*]补1.0010011+[–y*]补+[y*]补0.101001111.1010011010.010101余数为正,上商10.01110110余数为正,上商11.1101011余数为负,上商0[x]原=1.1011[y*]补=0.1101[–y*]补=1.0011[y]原=1.11011101逻辑左移6.3[x*]补=0.1011逻辑左移逻辑左移逻辑左移+++++2024/1/1194青岛大学①x0

y0=1

1=0②x*y*=0.1101∴=0.1101[]原xy上商n+1次例6.25结果特点用移位的次数判断除法是否结束第一次上商判溢出移n

次,加n+1次6.32024/1/1195青岛大学(3)原码加减交替除法硬件配置A、X、Q均n

+1位用Qn控制加减交替6.396

0

A

nn+1位加法器控制门0

X

n0Q

n

计数器CGD加减移位和加控制逻辑SV左移第6章计算机的运算方法6.1无符号数和有符号数6.3定点运算6.2数的定点表示和浮点表示6.4浮点四则运算6.5算术逻辑单元2024/1/1197青岛大学6.4浮点四则运算浮点数的加减运算对阶尾数求和规格化舍入溢出判断举例浮点的乘除法运算……2024/1/11哈尔滨工业大学986.4浮点四则运算一、浮点加减运算x=Sx

·2jxy=Sy

·2jy1.对阶(1)求阶差(2)对阶原则Δj=jx

–jy=jx=jy

已对齐jx>

jy

jx<

jy

x

y

看齐y

x

看齐x

y

看齐y

x

看齐小阶向大阶看齐Sx1,Sy1,Sx1,Sy1,=0>0<0

jx–1jy+1jx+1jy–12024/1/1199青岛大学例如x=0.1101

×

201

y=(–0.1010)

×

211求x

+

y解:[x]补=00,01;00.1101[y]补=00,11;11.01101.对阶[Δj]补=[jx]补

–[jy]补=00,0111,0111,10阶差为负(–

2)[Sx]补'

=

00.0011[Sy]补=11.011011.1001∴Sx2jx+2∴[x+y]补=00,11;11.1001②对阶[x]补'=00,11;00.0011++对阶后的[Sx]补'

6.4①求阶差2.尾数求和2024/1/111003.规格化(1)规格化数的定义(2)规格化数的判断r=2≤|S|<1

12S>0真值原码补码反码规格化形式S<0规格化形式真值原码补码反码0.1×××…0.1×××…0.1×××…0.1×××…原码不论正数、负数,第一数位为1补码符号位和第一数位不同–0.1××

×…1.1×××…1.0×××…

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论