第6章作业解析_第1页
第6章作业解析_第2页
第6章作业解析_第3页
第6章作业解析_第4页
第6章作业解析_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

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

文档简介

(6)据题意画出该浮点数格式:

1519阶符阶码数符尾数由于题意中未指定该浮点数所采用的码制,则不同的假设前提会导致不同的答案,示意如下:1)当采用阶原尾原非规格化数时,最大正数=0,11111;0.111111111最小正数=1,11111;0.000000001则正数表示范围为:

231(1-2-9)~2-312-9三、举例例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.2x=–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例6.15写出对应下图所示的浮点数的补码形式。设n=10,m=4,阶符、数符各取1位。负数区正数区下溢0上溢上溢–2(2m–1)×(1

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

2–n)2–(2m–1)×2–n最小负数最大正数最小正数–2–(2m–1)×2–n最大负数解:真值最大正数最小正数最大负数最小负数215×(1

2–10)2–15×2–10–2–15×2–10–215×(1

2–10)0,1111;0.11111111111,0001;0.00000000011,0001;1.11111111110,1111;1.0000000001补码6.2

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

按机器零处理机器零

当浮点数阶码等于或小于它所表示的最小数时,不论尾数为何值,按机器零处理如m=4n=10当阶码用移码,尾数用补码表示时,机器零为0,0000;0.000

1,0000;×.×××

…×,××××;0.000

…有利于机器中“判0”电路的实现当阶码和尾数都用补码表示时,机器零为6.2(阶码=16)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

练习设机器数字长为24位,欲表示±3万的十进制数,试问在保证数的最大精度的前提下,除阶符、数符各取1位外,阶码、尾数各取几位?满足最大精度可取m=4,n=18解:…m=4,5,6,15位二进制数可反映±3万之间的十进制数∴215

=32768214

=16384∵6.2215×0.××××××15位…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.2例如:最大正数=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.212.设浮点数格式为:阶符1位、阶码4位、数符1位、尾数10位。

写出51/128、27/1024、7.375、-86.5所对应的机器数。要求

(1)阶码和尾数均为原码;

(2)阶码和尾数均为补码;

(3)阶码为移码,尾数为补码。

解:据题意画出该浮点数的格式:

14110阶符阶码数符尾数

将十进制数转换为二进制:

x1=51/128 =(0.0110011)2 =2-1(0.110011)2

x2=-27/1024 =(-0.0000011011)2 =2-5

(-0.11011)2

x3=7.375 =(111.011)2 =23

(0.111011)2

x4=-86.5 =(-1010110.1)2=27

(-0.10101101)2

则以上各数的浮点数为:

(1)[x1]浮=1,0001;0.1100110000

(2)[x1]浮=1,1111;0.1100110000

(3)[x1]浮=0,1111;0.1100110000规格化数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越大,浮点数的精度降低(1)[x2]浮=1,0101;1.1101100000

(2)[x2]浮=1,1011;1.0010100000

(3)[x2]浮=0,1011;1.0010100000

(1)[x3]浮=0,0011;0.1110110000

(2)[x3]浮=0,0011;0.1110110000

(3)[x3]浮=1,0011;0.1110110000

(1)[x4]浮=0,0111;1.1010110100

(2)[x4]浮=0,0111;1.0101001100

(3)[x4]浮=1,0111;1.0101001100

注:以上浮点数也可采用如下格式:

11410数符阶符阶码尾数

此时只要将上述答案中的数符位移到最前面即可。13.浮点数格式同上题,当阶码基值分别取2和16时,

(1)说明2和16在浮点数中如何表示。

(2)基值不同对浮点数什么有影响?

(3)当阶码和尾数均用补码表示,且尾数采用规格化形式,给出两种情

况下所能表示的最大正数和非零最小正数真值。

解:(1)阶码基值不论取何值,在浮点数中均为隐含表示,即:2和16不出

现在浮点格式中,仅为人为的约定。(2)当基值不同时,对数的表示范围和精度都有影响。即:在浮点格式不变的情况下,基越大,可表示的浮点数范围越大,但精度越下降。

(3)r=2时,最大正数的浮点格式为:

0,1111;0.1111111111其真值为:N+max=215×(1-2-10)

非零最小规格化正数浮点格式为:

1,0000;0.1000000000其真值为:N+min=2-16×2-1=2-17

r=16时,最大正数的浮点格式为:

0,1111;0.1111111111其真值为:N+max=1615×(1-2-10)

非零最小规格化正数浮点格式为:

1,0000;0.0001000000其真值为:N+min=16-16×16-1=16-1714.设浮点数字长为32位,欲表示±6万间的十进制数,在保证数的最大精度条件下,除阶符、数符各取一位外,阶码和尾数各取几位?按这样分配,该浮点数溢出的条件是什么?

解:若要保证数的最大精度,应取阶的基=2。

若要表示±6万间的十进制数,由于32768(215)<6万<65536(216),则:阶码除阶符外还应取16位(向上取2的幂)。

故:尾数位数=32-1-1-16=14位

按此格式,该浮点数上溢的条件为:阶码216(65536)

该浮点数格式如下:

116114阶符

阶值数符

尾数15.什么是机器零?若要求全0表示机器零,浮点数的阶码和尾数应采取什么机器数形式?

解:机器零指机器数所表示的零的形式,它与真值零的区别是:机器零在数轴上表示为“0”点及其附近的一段区域,即在计算机中小到机器数的精度达不到的数均视为“机器零”,而真零对应数轴上的一点(0点)。若要求用“全0”表示浮点机器零,则浮点数的阶码应用移码、尾数用补码表示(此时阶码为最小阶、尾数为零,而移码的最小码值正好为“0”,补码的零的形式也为“0”,拼起来正好为一串0的形式)。17.设机器数字长为8位(包括一位符号位),对下列各机器数进行算术左移一位、两位,算术右移一位、两位,讨论结果是否正确。

[x1]原=0.0011010;

[x2]原=1.1101000;

[x3]原=1.0011001;

[y1]补=0.1010100;

[y2]补=1.1101000;

[y3]补=1.0011001;

[z1]反=1.0101111;

[z2]反=1.1101000;

[z3]反=1.0011001。解:算术左移一位:

[x1]原=0.0110100;正确

[x2]原=1.1010000;溢出(丢1)出错

[x3]原=1.0110010;正确

[y1]补=0.0101000;溢出(丢1)出错

[y2]补=1.1010000;正确

[y3]补=1.0110010;溢出(丢0)出错

[z1]反=1.1011111;溢出(丢0)出错

[z2]反=1.1010001;正确

[z3]反=1.0110011;溢出(丢0)出错

算术左移两位:

[x1]原=0.1101000;正确

[x2]原=1.0100000;溢出(丢11)出错

[x3]原=1.1100100;正确

算术左移两位:

[y1]补=0.1010000;溢出(丢10)出错

[y2]补=1.0100000;正确

[y3]补=1.1100100;溢出(丢00)出错

[z1]反=1.0111111;溢出(丢01)出错

[z2]反=1.0100011;正确

[z3]反=1.1100111;溢出(丢00)出错

算术右移一位:

[x1]原=0.0001101;正确

[x2]原=1.0110100;正确

[x3]原=1.0001100(1);丢1,产生误差

[y1]补=0.0101010;正确

[y2]补=1.1110100;正确

[y3]补=1.1001100(1);丢1,产生误差

算术右移一位:

[z1]反=1.1010111;正确

[z2]反=1.1110100(0);丢0,产生误差

[z3]反=1.1001100;正确

算术右移两位:

[x1]原=0.0000110(10);产生误差

[x2]原=1.0011010;正确

[x3]原=1.0000110(01);产生误差

[y1]补=0.0010101;正确

[y2]补=1.1111010;正确

[y3]补=1.1100110(01);产生误差

[z1]反=1.1101011;正确

[z2]反=1.1111010(00);产生误差

[z3]反=1.1100110(01);产生误差18.试比较逻辑移位和算术移位。

解:逻辑移位和算术移位的区别:

逻辑移位是对逻辑数或无符号数进行的移位,其特点是不论左移还是右移,空出位均补0,移位时不考虑符号位。

算术移位是对带符号数进行的移位操作,其关键规则是移位时符号位保持不变,空出位的补入值与数的正负、移位方向、采用的码制等有关。

补码或反码右移时具有符号延伸特性。左移时可能产生溢出错误,右移时可能丢失精度。2.算术移位规则1右移添1左移添00反码补码原码负数0原码、补码、反码正数添补代码码制符号位不变6.3例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左移一位左移两位右移一位右移两位–61,1111001–131,1110010–1041,0010111–521,1001011–261,1100101移位前对应的真值机器数移位操作–71,1111001–131,1110011–1041,0011000–521,1001100–261,1100110移位前对应的真值机器数移位操作补码反码6.3左移一位左移两位右移一位右移两位左移一位左移两位右移一位右移两位4.算术移位和逻辑移位的区别算术移位有符号数的移位逻辑移位无符号数的移位逻辑左移逻辑右移低位添0,高位移丢高位添0,低位移丢例如

01010011逻辑左移10100110逻辑右移01011001算术左移算术右移0010011011011001(补码)高位1移丢010100110Cy0101001100101100106.320.用原码一位乘、两位乘和补码一位乘(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]原=x=0.110111,[y]原=1.101110

x*=0.110111,y*=0.101110

x0=0,y0=1,z0=x0

y0=0

1=1

x*×y*=0.100111100010

[x×y]原=1.100111100010

x·y=-0.100111100010原码一位乘:

部分积乘数y*

0.000000.101110——+0

10.0000000.10111——+x*

+0.110111

0.110111

10.01101110.1011——+x*

+0.110111

1.010010

10.101001010.101——+x*

+0.110111

1.100000

10.1100000010.10——+0

10.01100000010.1——x*

+0.110111

1.001111

10.1001111000102x*=01.101110,[-x*]补=[-x]补=1.001001

原码两位乘:

部分积乘数Cj

000.00000000.1011100

+001.101110+2x*

001.1011100

2000.0110111000.1011

+111.001001+[-x*]补

111.1001001

2111.111001001000.10

+111.001001+[-x*]补

111.0000101

2111.11000010001000.

+000.110111+x*

000.1001111000100

结果同一位乘,x·y=-0.100111100010[x]补=x=0.110111

[y]补=1.010010

[-x]补=1.001001

[2x]补=01.101110

[-2x]补=10.010010

[x×y]补=1.0110000111100

x·y=-0.1001111000100

补码一位乘、两位乘运算过程如下:补码一位乘:部分积乘数[y]补yn+1

00.0000001.0100100——+0

100.00000001.010010

+11.001001+[-x]补

11.001001

111.100100101.01001

+00.110111+[x]补

00.011011

100.0011011101.0100——+0

100.00011011101.010

+11.001001+[-x]补

11.001111

111.100111111101.01

+00.110111+[x]补

00.011110

100.0011110111101.0

+11.001001+[-x]补

11.0110000111100——清0补码两位乘:

部分积乘数yn+1

000.00000011.0100100

+110.010010+[-2x]补

110.010010

2111.1001001011.01001

+000.110111+[x]补

000.011011

2000.000110111011.010

+000.110111+[x]补

000.111101

2000.00111101111011.0

+111.001001+[-x]补

111.01100001111000.

结果同补码一位乘,x·y=-0.10011110001000(2)x=-0.010111,y=-0.010101

[x]原=1.010111,[y]原=1.010101

x*=0.010111,y*=0.010101

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

[-2x*]补=1.010010

x0=1,y0=1,z0=x0

y0=1

1=0

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

[-x]补=0.010111,[2x]补=1.010010

[-2x]补=0.101110

x*×y*=0.000111100011

[x×y]原=0.000111100011

[x×y]补=0.0001111000110

x·y=0.000111100011

运算过程如下:原码一位乘:

部分积乘数y*

0.000000.010101——+x*

+0.010111

0.010111

10.0010111.01010——+0

10.00010111.0101——+x*

+0.010111

0.011100

10.001110011.010——+0

10.0001110011.01——+x*

+0.010111

0.011110

10.00111100011.0——+0

10.000111100011

原码两位乘:

部分积乘数y*Cj

000.00000000.0101010

+000.010111+x*

000.0101110

2000.0001011100.0101

+000.010111+x*

000.0111000

2000.000111001100.01

+000.010111+x*

000.0111100

2000.00011110001100.

+0

结果同一位乘,x·y=0.000111100011补码一位乘:部分积乘数[y]补yn+1

00.0000001.1010110

+00.010111+[-x]补

00.010111

100.00101111.101011——+0

100.000101111.10101

+11.101001+[x]补

11.101110

111.1101110111.1010

+00.010111+[-x]补

00.001110

100.00011100111.101

+11.101001+[x]补

11.110000

111.111000000111.10

+00.010111+[-x]补

00.001111

100.0001111000111.1——+0补码两位乘:

部分积乘数yn+1

000.00000011.1010110

+000.010111+[-x]补

000.010111

2000.0001011111.10101

+000.010111+[-x]补

000.011100

2000.000111001111.101

+000.010111+[-x]补

000.011110

2000.00011110001111.1

清0+0

结果同补码一位乘,x·y=0.00011110001100(3)x=19,y=35

x=(10011)2,y=(100011)2

x*=[x]原=[x]补=0,010011

y*=[y]原=[y]补=0,100011

[-x*]补=[-x]补=1,101101

2x*=[2x]补=0,100110

[-2x*]补=[-2x]补=1,011010

x0=0,y0=0,z0=x0

y0=0

0=0

x·y=x*×y*=[x×y]原=[x×y]补

=0,001010011001

运算过程如下:原码一位乘:

部分积乘数y*

0,000000100011——+x*

+0,010011

0,010011

10,001001110001——+x*

+0,010011

0,011100

10,001110011000——+0

10,000111001100——+0

10,000011100110——+0

10,000001110011——+x*

+0,010011

0,010100

10,001010011001

原码两位乘:

部分积乘数y*Cj

000,00000000,1000110

+111,101101+[-x*]补

111,1011011

2111,1110110100,1000

+000,010011+x*

000,0011100

2000,000011100100,10

+000,100110+2x*

000,1010010

2000,00101001

100100,

+0

结果同一位乘,x·y=0,001010011001补码一位乘:部分积乘数[y]补yn+1

00,0000000,1000110

+11,101101+[-x]补

11,101101

111,11011010,100011——+0

111,111011010,10001

+00,010011+[x]补

00,001110

100,0001110010,1000——+0

100,00001110010,100——+0

100,000001110010,10

+11,101101+[-x]补

11,101110

111,1101110110010,1

+00,010011+[x]补

00,001010

011001

0

补码两位乘:

部分积乘数yn+1

000,00000000,1000110

+111,101101+[-x]补

111,101101

2111,1110110100,10001

+000,010011+[x]补

000,001110

2000,000011100100,100

+111,011010+[-2x]补

111,011101

2111,11011101100100,1

+000,010011+0

000,00101001100100

结果同补码一位乘,x·y=0.00011110001100(4)x=0.11011,y=-0.11101

x*=[x]原=[x]补=0.11011

[y]原=1.11101,y*=0.11101

[y]补=1.00011

[-x*]补=[-x]补=1.00101

2x*=[2x]补=01.10110

[-2x*]补=[-2x]补=10.01010

x0=0,y0=1,z0=x0

y0=0

1=1

x*×y*=0.1100001111

[x×y]原=1.1100001111

[x×y]补=1.00111100010

x·y=-0.1100001111

运算过程如下:原码一位乘:部分积乘数y*

0.00000.11101——+x*

+0.11011

0.11011

10.011011.1110——+0

10.0011011.111——+x*

+0.11011

1.00001

10.10000111.11——+x*

+0.11011

1.01011

10.101011111.1——+x*

+0.11011

1.10000

10.1100001111

原码两位乘:

部分积乘数y*Cj

000.000000.111010

+000.11011+x*

000.110110

2000.00110110.111

+111.00101+[-x*]补

111.010111

2111.110101111.01

+001.10110+2x*

001.100000

1000.11000011110.

+0

结果同一位乘,x·y=-0.1100001111补码一位乘:

部分积乘数[y]补yn+1

00.000001.000110

+11.00101+[-x]补

11.00101

111.1001011.00011——+0

111.11001011.0001

+00.11011+[x]补

00.10100

100.010100011.000——+0

100.0010100011.00——+0

100.00010100011.0

+11.00101+[-x]补

11.00111100010——清0补码两位乘:

部分积乘数yn+1

000.000001.000110

+111.00101+[-x]补

111.00101

2111.11001011.0001

+000.11011+[x]补

000.10100

2000.0010100011.00

+110.01010+[-2x]补

110.01111

1111.00111100010.

——清0

结果同补码一位乘,x·y=-0.1100001111021.用原码加减交替法和补码加减交替法计算x÷y。

(1)x=0.100111,y=0.101011;

(2)x=-0.10101,y=0.11011;

(3)x=0.10100,y=-0.10001;

(4)x=13/32,y=-27/32。

解:

(1)x*=[x]原=[x]补=x=0.100111

y*=[y]原=[y]补=y=0.101011

[-y*]补=[-y]补=1.010101

q0=x0y0=00=0

xy=x*y*=[xy]原=0.111010

r*=0.000010×2-6=0.000000000010

计算过程如下:原码加减交替除法:

被除数(余数)商

0.1001110.000000

+1.010101试减,+[-y*]补

1.111100

11.111000

0.

+0.101011r<0,+y*

0.100011

11.00011

0

0.1

+1.010101r>0,+[-y*]补

0.01101

温馨提示

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

评论

0/150

提交评论