【计算机组成原理】课后题答案解析清华大学出版秦磊华吴非·· 下载本文

2.4 已知数的补码表示形式,求数的真值。

[x]补=0.10010, [x]补=1.10010, [x]补=1.11111, [x]补=1.00000, [x]补=0.10001, [x]补=1.00001,

解:

[x]补=0.10010,则[x]原=0.10010,x=0.10010; [x]补=1.10010,则[x]原=1.01101,x=-0.01101; [x]补=1.11111,则[x]原=1.00000,x=-0; [x]补=1.00000,则[x]原=1.11111,x=-0.11111; [x]补=0.10001,则[x]原=0.10001,x=0.10001; [x]补=1.00001,则[x]原=1.11110,x=-0.11110。

2.5 已知x=0.10110,y=—0.01010,求:

[x/2]补, [x/4]补, [y/2]补, [2y]补

解: [x]原=0.10110=[x]反=[x]补,

所以[x/2]补=0.010110,[x/4]补=0.0010110; [y]原=1.01010,[y]反=1.10101,[y]补=1.10110, 所以[y/2]补=1.110110,[2y]补=1.0110。

2.6 C语言中允许无符号数和有符号整数之间的转换, 下面是一段C语言代码: Int x =-1;

Unsigned u=2147483648;

Printf (“x=%u=%d\\n”,x,x); Printf (“u=%u=%d\\n”,u,u);

给出在32位计算机中上述程序段的输出结果并分析原因. 解:x=4294967295=-1;u=2147483648=-2147483648

原因:x是int型,在计算机中以补码形式存在。%u以无符号输出,%d输出真值,所以x=4294967295=-1。

u=231是一个无符号数,无溢出,由于首位为1 %u符号输出第一位为非符号位,所以是2147483648

%d 第一位为符号位,所以是负数,取反加1还是231所以是-2147483648。

2.7 分析下列几种情况下所能表示的数据范围分别是多少 1)16位无符号数;

2)16位原码定点小数; 3)16位补码定点小数; 4) 16位补码定点整数; 解:

1)16位无符号数:0 ~ 1111 1111 1111 1111,即0 ~ 216-1=65535

2)16位原码定点小数:1.111 1111 1111 1111 ~ 0.111 1111 1111 1111,即 (-1-2-15)~ 1-2-15 3)16位补码定点小数:1.000 0000 0000 0000 ~ 0.111 1111 1111 1111,即 -1 ~ 1-2-15 4) 16位补码定点整数:1000 0000 0000 0000 ~ 0111 1111 1111 1111,即 -215 ~ 215-1

2.8 用补码表示8位二进制整数,最高位用一位表示符号(即形如x0x1x2x3x4x5x6x7)时,模

应为多少?

解:因为8位二进制数补码的表示范围为:-128~127一共有256个数,所以模为256。

2.9 用IEEE754 32位浮点数标准表示十进制数

a)?65 b)3.1415927 c)64000

8解:

a) 首先分别将整数和分数部分转换成二进制数:

5?6=-110.101 8移动小数点,使其变成1.M的形式: -110.101=-1.10101*22 于是得到:

S=0, e = 2,E= 10+01111111 = 10000001,M = 10101 最后得到32位浮点数的二进制存储格式为:

1100 0000 1101 0100 0000 0000 0000 0000=(C0D40000)16

b) 首先分别将整数和分数部分转换成二进制数: 3.1415927=11.00100100001111110110101 移动小数点,使其变成1.M的形式

11.00100100001111110110101=1.100100100001111110110101×2 于是得到:

S=0, e = 1,E= 1+01111111 =10000000,M = 10010010000111111011010 最后得到32位浮点数的二进制存储格式为:

0100 0000 0100 1001 0000 1111 1101 1010=(40490FDA)16

c) 首先将6400转换成二进制数: 64000=1100100000000

移动小数点,使其变成1.M的形式 1100100000000=1.100100000000×212 于是得到:

S=0, e = 12,E= 1100+01111111 =10001011,M = 1001 最后得到32位浮点数的二进制存储格式为:

0100 0101 1100 1000 0000 0000 0000 0000=(45C80000) 16

2.10 求与IEEE754 32位浮点数43940000H对应的十进制数。 解:

43940000H=(0100 0011 1001 0100 0000 0000 0000 0000)2 S=0,E=(10000111)2-127=8,M=1.00101 所以表示数为100101000,对应的十进制数为296。

2.11 求32位 IEEE754 浮点数能表示的最大数和最小数。

解:用IEEE754格式(E的取值范围:1~254,留出全0和全1分别表示0和无穷大)

31 30 23 22 0 SE M (1) 最大数的二进制表示: