计算机组成原理唐朔飞第6章部分答案下.docx

上传人:b****8 文档编号:23574157 上传时间:2023-05-18 格式:DOCX 页数:17 大小:19.86KB
下载 相关 举报
计算机组成原理唐朔飞第6章部分答案下.docx_第1页
第1页 / 共17页
计算机组成原理唐朔飞第6章部分答案下.docx_第2页
第2页 / 共17页
计算机组成原理唐朔飞第6章部分答案下.docx_第3页
第3页 / 共17页
计算机组成原理唐朔飞第6章部分答案下.docx_第4页
第4页 / 共17页
计算机组成原理唐朔飞第6章部分答案下.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

计算机组成原理唐朔飞第6章部分答案下.docx

《计算机组成原理唐朔飞第6章部分答案下.docx》由会员分享,可在线阅读,更多相关《计算机组成原理唐朔飞第6章部分答案下.docx(17页珍藏版)》请在冰豆网上搜索。

计算机组成原理唐朔飞第6章部分答案下.docx

计算机组成原理唐朔飞第6章部分答案下

第六章计算机的运算方法

 

6.20用原码一位乘、两位乘和补码一位乘(Booth算法)、两位乘计算x·y。

(1)x=0.110111,y=-0.101110;

(2)x=-0.010111,y=-0.010101;

(3)x=19,y=35;

(4)x=0.11011,y=-0.11101。

答:

(1)

原码一位乘:

[x]原=0.110111,[y]原=1.101110,x*=0.110111,y*=0.101110

部分积

乘数y*

说明

0.000000

+0.000000

101110

部分积初值为0,

乘数为0加0

0.000000

0.000000

+0.110111

010111

右移一位,乘数同时移一位

乘数为1,加上x*

0.110111

0.011011

+0.110111

0

101011

右移一位,乘数同时移一位

乘数为1,加上x*

1.010010

0.101001

+0.110111

10

010101

右移一位,乘数同时移一位

乘数为1,加上x*

1.100000

0.110000

+0.000000

010

001010

右移一位,乘数同时移一位

乘数为0,加上0

0.110000

0.011000

+0.110111

0010

000101

右移一位,乘数同时移一位

乘数为1,加上x*

1.001111

0.100111

10010

100010

右移一位,乘数同时移一位

即x*×y*=0.100111100010,

z0=x0y0=01=1,

[x×y]原=1.100111100010,x·y=-0.100111100010

原码两位乘:

[-x*]补=1.001001,2x*=1.101110

部分积

乘数y*

Cj

说明

000.000000

+001.101110

00101110

0

部分积初值为0,Cj=0

根据yn-1ynCj=100,加2x*,保持Cj=0

001.101110

000.011011

+111.001001

10001011

0

右移2位,乘数同时右移2位

根据yn-1ynCj=110,加[-x*]补,置Cj=1

111.100100

111.111001

+111.001001

10

00100010

1

右移2位,乘数同时右移2位

根据yn-1ynCj=101,加[-x*]补,置Cj=1

111.000010

111.110000

+000.110111

0010

10001000

1

右移2位,乘数同时右移2位

根据yn-1ynCj=001,加x*,保持Cj=0

000.100111

100010

即x*×y*=0.100111100010,z0=x0y0=01=1,

[x×y]原=1.100111100010,x·y=-0.100111100010

补码一位乘:

[x]补=0.110111,[-x]补=1.001001,[y]补=1.010010

部分积

乘数

Yn+1

说明

00.000000

+00.000000

1010010

0

初值为0,

Ynyn+1=00,部分积不变

00.000000

00.000000

+11.001001

0101001

0

右移1位

Ynyn+1=10,部分积加[-x]补

11.001001

11.100100

+00.110111

1010100

1

右移1位

Ynyn+1=01,部分积加[x]补

00.011011

00.001101

00.000110

+11.001001

1101010

1110101

0

0

右移1位

Ynyn+1=00,部分积右移1位

Ynyn+1=10,部分积加[-x]补

11.001111

11.100111

+00.110111

1111010

1

右移1位

Ynyn+1=01,部分积加[x]补

00.011110

00.001111

+11.001001

0111101

0

右移1位

Ynyn+1=10,部分积加[-x]补

11.011000

011110

即[x×y]补=1.011000011110,x·y=-0.100111100010

补码两位乘:

2[x]补=01.101110,2[-x]补=10.010010

部分积

乘数

说明

000.000000

+110.010010

110100100

判断位为100,加2[-x]补

110.010010

111.100100

+000.110111

101101001

右移2位

判断位为001,加[x]补

111.011011

111.110110

+000.110111

10

111011010

右移2位

判断位为010,加[x]补

111.101101

111.111011

+111.001001

1110

011110110

右移2位

判断位为110,加[-x]补

111.000100

011110

[x×y]补=1.011000011110,x·y=-0.100111100010

(2)

原码一位乘:

[x]原=1.010111,[y]原=1.010101,x*=0.010111,y*=0.010101

部分积

乘数y*

说明

0.000000

+0.010101

010101

部分积初值为0,

乘数为1加被乘数

0.010101

0.001010

+0.010111

101010

右移一位,乘数同时移一位

乘数为1,加上x*

0.100001

0.010000

+0.010111

1

110101

右移一位,乘数同时移一位

乘数为1,加上x*

0.100111

0.010011

+0.000000

11

111010

右移一位,乘数同时移一位

乘数为0,加上0

0.010011

0.001001

+0.010101

111

111101

右移一位,乘数同时移一位

乘数为1,加上x*

0.011110

0.001111

+0.000000

1111

011110

右移一位,乘数同时移一位

乘数为0,加上0

0.001111

0.000111

01111

101111

右移一位,乘数同时移一位

即x*×y*=0.000111101111,

z0=x0y0=11=0,

[x×y]原=0.000111101111,x·y=0.000111101111

原码两位乘:

[-x*]补=1.101001,2x*=0.101110

部分积

乘数y*

Cj

说明

000.000000

+000.010101

00010101

0

部分积初值为0,Cj=0

根据yn-1ynCj=010,加x*,保持Cj=0

000.010101

000.000101

+000.010101

01000101

0

右移2位,乘数同时右移2位

根据yn-1ynCj=010,加x*,保持Cj=0

000.011010

000.001110

+000.010101

01

01010001

0

右移2位,乘数同时右移2位

根据yn-1ynCj=010,加x*,保持Cj=0

000.100011

000.001100

+000.000000

0101

11010100

0

右移2位,乘数同时右移2位

根据yn-1ynCj=001,加0,保持Cj=0

000.001100

000.000011

110101

即x*×y*=0.000011110101,z0=x0y0=11=0,

[x×y]原=0.000011110101,x·y=0.000011110101

补码一位乘:

[x]补=1.101001,[-x]补=0.010111,[y]补=1.101011

部分积

乘数

Yn+1

说明

00.000000

+00.010111

1101011

0

初值为0,

Ynyn+1=10,部分积加[-x]补

00.010111

00.001011

00.000101

+11.101001

1110101

1111010

1

1

右移1位

Ynyn+1=11,部分积右移一位

Ynyn+1=01,部分积加[x]补

11.101110

11.110111

+00.010111

11

0111101

0

右移1位

Ynyn+1=10,部分积加[-x]补

00.001110

00.000111

+11.101001

011

0011110

1

右移1位

Ynyn+1=01,部分积加[x]补

11.110000

11.111000

+00.010111

0011

0001111

0

右移1位

Ynyn+1=10,部分积加[-x]补

00.001111

00.000111

1000111

1

右移1位

Ynyn+1=11,部分积不变

00.000111

100011

即[x×y]补=0.000111100011,x·y=0.000111100011

补码两位乘:

2[x]补=11.010010,2[-x]补=0.101110

部分积

乘数

说明

000.000000

+000.010111

11.1010110

判断位为110,加[-x]补

000.010111

000.000101

+000.010111

111110101

右移2位

判断位为101,加[-x]补

000.011100

000.000111

+000.010111

11

001111101

右移2位

判断位为101,加[-x]补

000.011110

000.000111

0011

100011111

右移2位

判断位为111,不变

000.000111

100011

[x×y]补=0.000111100011,x·y=0.000111100011

(3)原码一位乘

[x]原=0,010011[y]原=0,100011

部分积

乘数

说明

0,000000

+0,010011

100011

初始条件,部分积为0

乘数为1,加被乘数

0,010011

0,001001

+0,010011

110001

右移1位

乘数为1,加被乘数

0,011100

0,001110

+0,000000

1

011000

右移1位

乘数为0,加上0

0,001110

0,000111

+0,000000

01

001100

右移1位

乘数为0,加上0

0,000111

0,000011

+0,000000

001

100110

右移1位

乘数为0,加上0

0,000011

0,000001

+0,010011

1001

110011

右移1位

乘数为1,加上被乘数

0,010100

0,001010

11001

011001

右移1为,形成最终结果

[x·y]原=0,001010011001

原码二位乘

[x]原=0,010011[y]原=0,1000112x*=0,100110[-x*]补=1,101101

部分积

乘数

Cj

说明

000,000000

+111,101101

00100011

0

开始,部分积为0,Cj=0

根据110,减x*,Cj置1

111,101101

111,111011

+000,010011

01001000

1

右移2位

根据001,加x*,Cj置0

000,001110

000,000011

+000,100110

01

10010010

0

右移2位

根据100,加2x*,Cj保持0

000,101001

000,001010

+000,000000

1001

01100100

0

右移2位

根据000,Cj保持0

000,001010

011001

形成最终结果

[x·y]原=0,001010011001

 

补码一位乘

[x]补=0,010011[y]补=0,100011[-x]补=1,101101

部分积

乘数

附加位

说明

00,000000

+11,101101

0100011

0

10,部分积加[-x]补

11,101101

11,110110

11,111011

+00,010011

1010001

0101000

1

1

右移1位

11右移1位

01,部分积加[x]补

00,001110

00,000111

00,000011

00,000001

+11,101101

01

0010100

1001010

1100101

0

0

0

右移1位

00右移1位

00右移1位

10,部分积加[-x]补

11,101110

11,110111

+00,010011

11001

0110010

1

右移1位

01,部分积加[x]补

00,001010

011001

[x·y]原=0,001010011001

补码两位乘

[x]补=0,010011[y]补=0,100011[-x]补=1,1011012[x]补=0,100110

部分积

乘数

说明

000,000000

+000,100110

000100011

011,+2[x]补

000,100110

000,001001

+000,000000

100001000

 

000,加0

000,001001

000,000010

+000,010011

10

011000010

 

010,+[x]补

000,010101

000,000101

+000,000000

0110

010110000

 

000,加0

000,001010

011001

[x·y]原=0,001010011001

 

(4)原码一位乘

[x]原=0.11011[y]原=1.11101

部分积

乘数

说明

0.00000

+0.11011

11101

初始条件,部分积为0

乘数为1,加被乘数

0.11011

0.01101

+0.00000

11110

右移1位

乘数为0,加0

0.01101

0.00110

+0.11011

1

11111

右移1位

乘数位1,加被乘数

1.00001

0.10000

+0.11011

11

11111

右移1位

乘数位1,加被乘数

1.01011

0.10101

+0.11011

111

11111

右移1位

乘数位1,加被乘数

1.10000

0.11000

1111

01111

右移1位,形成最终结果

[x·y]原=1.1100001111

原码两位乘

[x]原=0.110110[y]原=1.1110102x*=1.101100[-x*]补=1.001010

部分积

乘数

Cj

说明

000.000000

+111.101100

00111010

0

开始,部分积为0,Cj=0

根据100,加2x*,Cj保持0

111.101100

111.111011

+111.101100

00001110

0

右移2位

根据100,加2x*,Cj保持0

111.100111

111.111001

+111.001010

00

11000011

0

右移2位

根据110,减x*,Cj置1

111.000011

111.110000

+000.110110

1100

11110000

1

右移2位

根据001,加x*,Cj置0

000.100110

111100

[x·y]原=1.1100001111

补码一位乘

[x]原=0.11011[y]原=1.111012x*=1.10110[-x]补=1.00101

部分积

乘数

附加位

说明

00.00000

+11.00101

100011

0

10,加[-x]补

11.00101

11.10010

11.11001

+00.11011

110001

011000

1

1

 

01,加[x]补

00.10100

00.01010

00.00101

00.00010

+11.00101

01

001100

000110

100011

0

0

0

 

10,加[-x]补

11.00111

10001

[x·y]原=1.1100001111

补码两位乘

[x]补=0.11011[y]补=1.00011[-x]补=1.001012[-x]补=0.01010

部分积

乘数

说明

000.00000

+111.00101

11000110

110,加[-x]补

111.00101

111.11001

+000.11011

01110001

 

001,加[x]补

000.10100

000.00101

+000.01010

01

00011100

 

100,加2[-x]补

000.01111

000.00011

+000.00000

0001

11000111

 

111,加0

000.00011

110001

[x·y]原=1.1100001111

6.22设机器字长为16位(含1位符号位),若一次移位需1us,一次加法需1us,试问原码一位乘、补码一位乘、原码加减交替除和补码加减交替法最多各需多少时间?

答:

原码一位乘:

15+15=30us

补码一位乘:

15+16=31us

原码加减交替除:

15+16=31us

补码加减交替法:

15+15=30us

6.26按机器补码浮点运算步骤,计算[x±y]补.

(1)x=2-011×0.101100,y=2-010×(-0.011100);

(2)x=2-011×(-0.100010),y=2-010×(-0.011111);

(3)x=2101×(-0.100101),y=2100×(-0.001111)。

答:

(1)[x]补=11,101;00.101100,[y]补=11,110;11.100100

[Ex]补=11,101,[y]补=11,110,[Mx]补=00.101100,[My]补=11.100100

1)对阶:

[E]补=[Ex]补+[-Ey]补=11,101+00,010=11,111<0,

应Ex向Ey对齐,则:

[x]补=11,110;00.010110

2)求和:

[Mx]补+[My]补=00.010110+11.100100=11.111010

[Mx]补+[-My]补=00.010110+00.011100=00.110010

3)结果规格化:

[x+y]补=11,110;11.111010=11,011;11.010000(尾数左规3次,阶码减3)

[x-y]补=11,110;00.110010,已是规格化数。

4)舍入:

5)溢出:

则:

x+y=2-101×(-0.110000)

x-y=2-010×0.110010

(2)[x]补=11,101;11.011110,[y]补=11,110;11.100001

[Ex]补=11,101,[y]补=11,110,[Mx]补=11.011110,[My]补=11.100001

1)对阶:

[E]补=[Ex]补+[-Ey]补=11,101+00,010=11,111<0,

应Ex向Ey对齐,则:

[x]补=11,110;11.101111

2)求和:

[Mx]补+[My]补=11.101111+11.100001=11.010000

[Mx]补+[-My]补=11.101111+00.011111=00.001110

3)结果规格化:

[x+y]补=11,110;11.010000已是规格化数

[x-y]补=11,100;00.111000,(尾数左规2次,阶码减2)。

4)舍入:

5)溢出:

则:

x+y=2-010×(-0.010000)

x-y=2-100×0.111000

(3)[x]补=00,101;11.100101,[y]补=00,100;11.110001

[Ex]补=00,101,[y]补=00,100,[Mx]补=11.100101,[My]补=11.110001

1)对阶:

[E]补=[Ex]补+[-Ey]补=00,101+11,100=00,001>0,

应Ey向Ex对齐,则:

[y]补=00,101;11.111000

2)求和:

[Mx]补+[My]补=11.100101+11.111000=11.011101

[Mx]补+[-My]补=11.100101+00.001000=11.101101

3)结果规格化:

[x+y]补=00,101;11.011101已是规格化数

[x-y]补=00,100;11.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1