ImageVerifierCode 换一换
格式:DOCX , 页数:6 ,大小:19.96KB ,
资源ID:8494213      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8494213.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第二章习题ddg.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第二章习题ddg.docx

1、第二章习题ddg第二章习题-ddg 第 二 章 习 题 答 案 1 给出以下概念的解释说明。 真值 机器数 数值数据 非数值数据 无符号整数 带符号整数 定点数 原码 补码 变形补码 溢出 浮点数 尾数 阶 阶码 移码 阶码下溢 阶码上溢 规格化数 左规 右规 非规格化数 机器零 非数(NaN) BCD码 逻辑数 ASCII码 汉字输入码 汉字内码 机器字长 大端方式 小端方式 最高有效位 最高有效字节(MSB) 最低有效位 最低有效字节(LSB) 掩码 算术移位 逻辑移位 0扩展 符号扩展 零标志ZF 溢出标志OF 符号标志SF 进位/借位标志CF 2 简单回答下列问题。 (1)为什么计算机

2、内部采用二进制表示信息?既然计算机内部所有信息都用二进制表示,为什么还要用到十六进制或八进制数? (2)常用的定点数编码方式有哪几种? 通常它们各自用来表示什么? (3)为什么现代计算机中大多用补码表示带符号整数? (4)在浮点数的基数和总位数一定的情况下,浮点数的表示范围和精度分别由什么决定?两者如何相互制约? (5)为什么要对浮点数进行规格化?有哪两种规格化操作? (6)为什么有些计算机中除了用二进制外还用BCD码来表示数值数据? (7)为什么计算机处理汉字时会涉及到不同的编码(如,输入码、内码、字模码)?说明这些编码中哪些用二进制编码,哪些不用二进制编码,为什么? 3实现下列各数的转换。

3、 (1) (25.8125)10= (?)2= (?) 8= (?) 16 (2) (_.011)2 = (?)10= (?) 8= (?) 16= (?) 8421 (3) (0101 1001 0110.0011)8421 = (?)10= (?) 2= (?) 16 (4) (4E.C)16 = (?)10= (?) 2 4 假定机器数为8位(1位符号,7位数值),写出下列各二进制数的原码表示。 +0.1001,0.1001,+1.0,1.0,+0.0_,0.0_,+0,0 5 假定机器数为8位(1位符号,7位数值),写出下列各二进制数的补码和移码表示。 +1001,1001,+1,1,

4、+_,_,+0,0 6 已知 x补,求x (1)x补=_-_ (2)x补=_-_ (3)x补=_-_ (4)x补=_-_ 7 某32位字长的机器中带符号整数用补码表示,浮点数用IEEE 754标准表示,寄存器R1和R2的内 容分别为R1:_-_BH,R2:_-_BH。不同指令对寄存器进行不同的操作,因而不同指令执行时寄存器内容对应的真值不同。假定执行下列运算指令时,操作数为寄存器R1和R2的内容,则R1和R2中操作数的真值分别为多少? (1) 无符号整数加法指令 (2) 带符号整数乘法指令 (3) 单精度浮点数减法指令 8 假定机器M的字长为32位,用补码表示带符号整数。表2.12中第一列给出

5、了在机器M上执行的C 语言程序中的关系表达式,请参照已有的表栏内容完成表中后三栏内容的填写。 表2.12 题8用表 关系表达式 运算类型 结果 说明 0 = 0U 1 0 1 0U _-_47 _-_47 1 _-_47U _-_47 1 _-_47 (int) _-_48U 1 2 (unsigned) 1 2 无符号整数 有符号整数 0 1 11。1B (2321) 00。0B(0) 011。1B (2311) 100。0B (231) 9 在32位计算机中运行一个C语言程序,在该程序中出现了以下变量的初值,请写出它们对应的机器 数(用十六进制表示)。 (1)int x=-_ (2)sho

6、rt y=522 (3)unsigned z=_ (4)char c= (5)float a=-1.1 (6)double b=10.5 10. 在32位计算机中运行一个C语言程序,在该程序中出现了一些变量,已知这些变量在某一时刻的机 器数(用十六进制表示)如下,请写出它们对应的真值。 (1)int x:_6H (2)short y:DFFCH (3)unsigned z:_AH (4)char c:2AH 5)float a:C_-_H (6)double b:C_-_-_H 11. 以下给出的是一些字符串变量在内存中存放的字符串机器码,请根据ASCII码定义写出对应的字符 串。指出代码0A

7、H和00H对应的字符的含义。 (1)char *mystring1:68H 65H 6CH 6CH 6FH 2CH 77H 6FH 72H 6CH 64H 0AH 00H (2)char *mystring2:77H 65H 20H 61H 72H 65H 20H 68H 61H 70H 70H 79H 21H 00H 12. 以下给出的是一些字符串变量的初值,请写出对应的机器码。 (1)char *mystring1= (2)char *mystring2= 13. 已知C语言中的按位异或运算(“XOR”)用符号“”表示。对于任意一个位序列a,aa=0,C语言程 序可以利用这个特性来实现两个

8、数值交换的功能。以下是一个实现该功能的C语言函数: 1 void xor_swap(int _, int *y) 2 3 *y=_ *y; /* 第一步 */ 4 _=_ *y; /* 第二步 */ 5 *y=_ *y; /* 第三步 */ 6 假定执行该函数时_和*y的初始值分别为a和b,即_=a且*y=b,请给出每一步执行结束后,x和y 各自指向的内存单元中的内容分别是什么? 14. 假定某个实现数组元素倒置的函数reverse_array调用了第13题中给出的xor_swap函数: 1 void reverse_array(int a, int len) 2 3 int left, ri

9、ght=len-1; 4 for (left=0; left=right; left+, right-) 5 xor_swap(aleft, aright); 6 当len为偶数时,reverse_array函数的执行没有问题。但是,当len为奇数时,函数的执行结果不正确。请问,当len为奇数时会出现什么问题?最后一次循环中的left和right各取什么值?最后一次循环中调用xor_swap函数后的返回值是什么?对reverse_array函数作怎样的改动就可消除该问题? 15. 假设以下表2.13中的x和y是某C语言程序中的char型变量,请根据C语言中的按位运算和逻辑运 算的定义,填写表2

10、.13,要求用十六进制形式填写。 表2.13 题15用表 x 0x5F 0xC7 0x80 0x07 y 0xA0 0xF0 0x7F 0x55 xy xy x|y x|y x!y xy x | y !x | !y xy 16对于一个n(n8)位的变量x,请根据C语言中按位运算的定义,写出满足下列要求的C语言表达 式。 (1)x的最高有效字节不变,其余各位全变为0。 (2)x的最低有效字节不变,其余各位全变为0。 (3)x的最低有效字节全变为0,其余各位取反。 (4)x的最低有效字节全变1,其余各位不变。 17. 以下是一个由反汇编器生成的一段针对某个小端方式处理器的机器级代码表示文本,其中,

11、最左边 是指令所在的存储单元地址,冒号后面是指令的机器码,最右边是指令的汇编语言表示,即汇编指令。已知反汇编输出中的机器数都采用补码表示,请给出指令代码中划线部分表示的机器数对应的真值。 _d2: 81 ec b8 01 00 00 sub 0x1b8, %esp _d8: 8b 55 08 mov 0x8(?p), x _db: 83 c2 14 add $0x14, x _de: 8b 85 58 fe ff ff mov 0xfffffe58(?p), x _e4: 03 02 add (x), x _e6: 89 85 74 fe ff ff mov x, 0xfffffe74(?p)

12、 _ec: 8b 55 08 mov 0x8(?p), x _ef: 83 c2 44 add $0x44, x _f2: 8b 85 c8 fe ff ff mov 0xfffffec8(?p), x _f8: 89 02 mov x, (x) _fa: 8b 45 10 mov 0x10(?p), x _fd: 03 45 0c add 0xc(?p), x _-_: 89 85 ec fe ff ff mov x, 0xfffffeec(?p) _-_: 8b 45 08 mov 0x8(?p), x _-_: 83 c0 20 add $0x20, x 18. 假设以下C语言函数com

13、pare_str_len用来判断两个字符串的长度,当字符串str1的长度大于str2的 长度时函数返回值为1,否则为0。 1 int compare_str_len(char *str1, char *str2) 2 3 return strlen(str1) - strlen(str2) 4 已知C语言标准库函数strlen原型声明为“size_t strlen(const char *s);”,其中,size_t被定义为unsigned int类型。请问:函数compare_str_len在什么情况下返回的结果不正确?为什么?为使函数正确返回结果应如何修改代码? 19考虑以下C语言程序代码

14、: 1 int func1(unsigned word) 2 3 return (int) ( word 24) 24); 4 5 int func2(unsigned word) 6 7 return ( (int) word 24 ) 24; 8 假设在一个32位机器上执行这些函数,该机器使用二进制补码表示带符号整数。无符号数采用逻辑移位,带符号整数采用算术移位。请填写表2.14,并说明函数func1和func2的功能。 表2.14 题19用表 w 机器数 值 127 128 255 256 机器数 func1(w) 值 机器数 func2(w) 值 20填写表2.15,注意对比无符号整数

15、和带符号整数的乘法结果,以及截断操作前、后的结果。 表2.15 题20用表 模式 无符号 带符号 无符号 带符号 无符号 带符号 x 机器数 110 110 001 001 111 111 值 机器数 010 010 111 111 111 111 y 值 _y(截断前) 机器数 值 _y(截断后) 机器数 值 21以下是两段C语言代码,函数arith( )是直接用C语言写的,而optarith( )是对arith( )函数以某个确定 的M和N编译生成的机器代码反编译生成的。根据optarith( ),可以推断函数arith( ) 中M和N的值各是多少? #define M #define N

16、 int arith (int x, int y) int result = 0 ; result = _M + y/N; return result; int optarith ( int x, int y) int t = x; x = 4; x = t; if ( y 0 ) y += 3; y2; return x+y; 22. 下列几种情况所能表示的数的范围是什么? (1) 16位无符号整数 (2) 16位补码表示的带符号整数 (3) 下述格式的浮点数(基数为2,移码的偏置常数为128) 数符 尾数 阶码 8位移码 7位原码数值部分 23. 以IEEE 754单精度浮点数格式表示下列

17、十进制数。 +1.75,+19,1/8,258 24设一个变量的值为4098,要求分别用32位补码整数和IEEE 754单精度浮点格式表示该变量(结果 用十六进制形式表示),并说明哪段二进制位序列在两种表示中完全相同,为什么会相同? 25设一个变量的值为2 147 483 647(提示:2 147 483 647=231-1),要求分别用32位补码整数和_ 单精度浮点格式表示该变量(结果用十六进制形式表示),并说明哪种表示其值完全精确,哪种表示的是近似值。 26下表给出了有关IEEE 754浮点格式表示中一些重要的非负数的取值,表中已经有最大规格化数的相 应内容,要求填入其他浮点数格式的相应内

18、容。 表2.16 题26用表 单精度 项目 0 1 最大规格化数 最小规格化数 最大非规格化数 最小非规格化数 + NaN 阶码 _-_ 尾数 1。11 以2的幂次表示的值 (22-23)2127 以10的幂次表示的值 3.41038 双精度 以2的幂次 表示的值 (22-52)_ 以10的幂次 表示的值 1.8_ 1位 27已知下列字符编码:A为100 0001,a为110 0001,0为011 0000,求E、e、f、7、G、Z、5的7位 ACSII码和在第一位前加入奇校验位后的8位编码。 28假定在一个程序中定义了变量x、y和i,其中,x和y是float型变量(用_单精度浮点数表 示),

19、i是16位short型变量(用补码表示)。程序执行到某一时刻,x= 0.125、y=7.5、i=100,它们都被写到了主存(按字节编址),其地址分别是100,108和112。请分别画出在大端机器和小端机器上变量x、y和i中每个字节在主存的存放位置。 29. 对于图2.6,假设n=8,机器数X和Y的真值分别是x和y。请按照图2.6的功能填写表2.17,并给 出对每个结果的解释。要求机器数用十六进制形式填写,真值用十进制形式填写。 表2.17 题29用表 表示 无符号 带符号 无符号 带符号 X 0xB0 0xB0 0x7E 0x7E x Y 0x8C 0x8C 0x5D 0x5D y X+Y x+y OF SF CF X-Y x-y OF SF CF 30. 在字长为32位的计算机上,有一个函数其原型声明为“int ch_mul_overflow(int x, int y);”,该函数用 于对两个int型变量x和y的乘积判断是否溢出,若溢出则返回1,否则返回0。请使用64位精度的整数类型long long来编写该函数。 31对于第2.7.5节中例2.31存在的整数溢出漏洞,如果将其中的第5行改为以下两个语句:

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

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