HNU 计算机系统 作业2

P70页,第4

题目

一个字长为16的机器中,整型数据大小等同于指针,那么无符号整型数据、有符号整型数据以及有符号短整型数据的表示范围分别是多少?

答案

因为字长为16位,所以指针的大小是2个字节,因此在该机器中,整型数据大小也为2个字节,即16位,短整型数据大小应为8位。那么无符号整型数据表示范围[0,2^{16}-1]=[0,65535];有符号整型数据表示范围[-2^{16-1},2^{16-1}-1]=[-32768,32767];有符号短整型数据表示范围[-2^{8-1},2^{8-1}-1]=[-128,127]

P70页,第9

题目

对于下列C语言代码(节选),给出其在32位机器上的输出结果,并解释产生这些结果的原因。

void main()
int x =-1;
unsigned int uy = 4294967295UL;   // 使用UL以避免告警
int a = (x ^ uy);
int b = (x && uy);
printf ("unsigned x is: %u \n", x);
printf ("signed uy is: %d \n", uy);
printf ("a=%d\n", a);
printf ("b=%d\n", b);

答案

在32位机器上的输出结果如下:

第一行输出将有符号整数x=-1当作无符号整数输出,在32位机器中,x的二进制表示为11111111 11111111 11111111 11111111,解释为无符号整数即为4294967295。

第二行输出将无符号整数y=4294967295当作有符号整数输出,在32位机器中,y的二进制表示为11111111 11111111 11111111 11111111,解释为有符号整数即为-1。

前两行实质上是相同的二进制表示在无符号整数和有符号整数之间的转换。

第三行输出x和y按位异或后的结果。由于x和y的二进制表示相同,因此异或后结果为0。第四行输出x和y逻辑与后的结果。有符号数和无符号数运算时,会统一转换成无符号数进行运算,所以y会转换成4294967295,4294967295≠0,转换成bool类型是1,1 && 1=1,因此逻辑与后结果为1。

P71页,第11

题目

假如某浮点数类型有1位符号位、8位尾数和1位阶码,则该类型能表达的最大浮点数的十进制数值是多少?

答案

该浮点数的3部分如下:

符号位:0表示正数,1表示负数。最大数时,符号位为0。

阶码:由于阶码只有1位,因此可以认为阶码为0或为1时都表示规格化数。偏移量bias=2^{1-1}-1。实际指数exp = e − bias = e。最大数时,阶码为1,指数exp = 1。

尾数:最大值时,所有8位全为1,实际尾数 =1+(0.11111111)_2=\frac{511}{256} 。

综上,最大值为\frac{511}{256}\times2^1=\frac{511}{128}=3.9921875

P71页,第17

题目

考虑下列基于IEEE浮点格式的7位浮点表示。两个格式都没有符号位——它们只能表示非负的数字。

1)格式A

·有k=3个阶码位。阶码的偏置值是3。

·有n=4个小数位。

2)格式B

·有k=4个阶码位。阶码的偏置值是7。

·有n=3个小数位。

请将以格式A表示的数[101 1110]转换成以格式B表示的数。

答案

根据[101 1110]可以得到,在格式A中它的阶码为101,对应指数为5-3=2;尾数为1110,对应实际尾数为(1.1110)_2=1.875。因此这个数的十进制值为1.875\times2^2=7.5。转化为格式B,阶码为(2+7)_{10}=1001;实际尾数为(1.875)_{10}=1.111,所以尾数为111。综上,这个数以格式B表示应为[1001 111]。

P71页,第19

题目

假设一个基于IEEE浮点格式的9位浮点表示有1个符号位、4个阶码位(k=4)和4个尾数位(n=4),请写出正数中最小的非规格化数、最大的非规格化数、最小的规格化数、最大的规格化数的二进制位表示。

答案

非规格化数的阶码为全0或全1。当阶码全1时,表示∞或Nan,不予考虑;阶码为0时,能表示的最大的非规格化数为尾数全1,即[0 0000 1111];最小的非规格化数为尾数仅末位为1,即[0 0000 0001]。最小的规格化数阶码为0001,尾数为0000,即[0 0001 0000];最大的规格化数阶码为1110,尾数为1111,即[0 1110 1111]。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值