您好,欢迎来到爱学范文!

当前位置:爱学范文网>>实用资料>>第二章习题-ddg

第二章习题-ddg

标签:时间:

【综合文库】

第 二 章习题 答 案

1. 给出以下概念的解释说明。

真值机器数数值数据非数值数据无符号整数带符号整数 定点数原码补码 变形补码溢出 浮点数 尾数阶 阶码 移码 阶码下溢阶码上溢 规格化数 左规右规 非规格化数机器零 非数(NaN) BCD码逻辑数 ASCII码汉字输入码汉字内码机器字长 大端方式 小端方式最高有效位 最高有效字节(MSB)最低有效位 最低有效字节(LSB) 掩码 算术移位逻辑移位0扩展 符号扩展 零标志ZF 溢出标志OF符号标志SF 进位/借位标志CF 2. 简单回答下列问题。

(1)为什么计算机内部采用二进制表示信息?既然计算机内部所有信息都用二进制表示,为什么还要用到十六进制或八进制数?

(2)常用的定点数编码方式有哪几种? 通常它们各自用来表示什么? (3)为什么现代计算机中大多用补码表示带符号整数?

(4)在浮点数的基数和总位数一定的情况下,浮点数的表示范围和精度分别由什么决定?两者如何相互制约?

(5)为什么要对浮点数进行规格化?有哪两种规格化操作?

(6)为什么有些计算机中除了用二进制外还用BCD码来表示数值数据?

(7)为什么计算机处理汉字时会涉及到不同的编码(如,输入码、内码、字模码)?说明这些编码中哪些用二进制编码,哪些不用二进制编码,为什么? 3.实现下列各数的转换。

(1) (25.8125)10= (?)2= (?) 8= (?) 16

(2) (101101.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.010100,–0.010100,+0,–0 5. 假定机器数为8位(1位符号,7位数值),写出下列各二进制数的补码和移码表示。

+1001,–1001,+1,–1,+10100,–10100,+0,–0 6. 已知 [x]补,求x

(1)[x]补=11100111 (2)[x]补=10000000(3)[x]补=01010010 (4)[x]补=11010011

7. 某32位字长的机器中带符号整数用补码表示,浮点数用IEEE 754标准表示,寄存器R1和R2的内

容分别为R1:0000108BH,R2:8080108BH。不同指令对寄存器进行不同的操作,因而不同指令执行时寄存器内容对应的真值不同。假定执行下列运算指令时,操作数为寄存器R1和R2的内容,则R1和R2中操作数的真值分别为多少? (1) 无符号整数加法指令 (2) 带符号整数乘法指令 (3) 单精度浮点数减法指令

8. 假定机器M的字长为32位,用补码表示带符号整数。表2.12中第一列给出了在机器M上执行的C

语言程序中的关系表达式,请参照已有的表栏内容完成表中后三栏内容的填写。

表2.12 题8用表

关系表达式 运算类型 结果 说明 0 == 0U –1 < 0 –1–2147483647 – 1 2147483647U > –2147483647 – 1 2147483647 > (int) 2147483648U –1 > –2 (unsigned) –1 > –2 无符号整数 有符号整数0 1 11…1B (232–1) > 00…0B(0) 011…1B (231–1) > 100…0B (–231) 9. 在32位计算机中运行一个C语言程序,在该程序中出现了以下变量的初值,请写出它们对应的机器

数(用十六进制表示)。

(1)int x=-32768(2)short y=522 (3)unsigned z=65530 (4)char c=’@’ (5)float a=-1.1 (6)double b=10.5

10. 在32位计算机中运行一个C语言程序,在该程序中出现了一些变量,已知这些变量在某一时刻的机

器数(用十六进制表示)如下,请写出它们对应的真值。 (1)int x:FFFF0006H (2)short y:DFFCH(3)unsigned z:FFFFFFFAH (4)char c:2AH 5)float a:C4480000H(6)double b:C024800000000000H

11. 以下给出的是一些字符串变量在内存中存放的字符串机器码,请根据ASCII码定义写出对应的字符

串。指出代码0AH和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,a^a=0,C语言程

序可以利用这个特性来实现两个数值交换的功能。以下是一个实现该功能的C语言函数: 1 void xor_swap(int *x, int *y) 2 { 3*y=*x ^ *y; /* 第一步 */

4*x=*x ^ *y; /* 第二步 */ 5*y=*x ^ *y; /* 第三步 */ 6 }

假定执行该函数时*x和*y的初始值分别为a和b,即*x=a且*y=b,请给出每一步执行结束后,x和y

各自指向的内存单元中的内容分别是什么?

14. 假定某个实现数组元素倒置的函数reverse_array调用了第13题中给出的xor_swap函数: 1 void reverse_array(int a[], int len)2 {3int left, right=len-1;

4for (left=0; left<=right; left++, right--)5 xor_swap(&a[left], &a[right]);6 }

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

算的定义,填写表2.13,要求用十六进制形式填写。

表2.13 题15用表

x 0x5F 0xC7 0x80 0x07 y 0xA0 0xF0 0x7F 0x55 x^y x&y x|y ~x|~y x&!y x&&y x || y !x || !y x&&~y 16.对于一个n(n≥8)位的变量x,请根据C语言中按位运算的定义,写出满足下列要求的C语言表达

式。

(1)x的最高有效字节不变,其余各位全变为0。 (2)x的最低有效字节不变,其余各位全变为0。 (3)x的最低有效字节全变为0,其余各位取反。 (4)x的最低有效字节全变1,其余各位不变。

17.以下是一个由反汇编器生成的一段针对某个小端方式处理器的机器级代码表示文本,其中,最左边

是指令所在的存储单元地址,冒号后面是指令的机器码,最右边是指令的汇编语言表示,即汇编指令。已知反汇编输出中的机器数都采用补码表示,请给出指令代码中划线部分表示的机器数对应的真值。

80483d2: 81 ec b8 01 00 00sub &0x1b8, %esp 80483d8: 8b 55 08mov 0x8(?p), íx 80483db: 83 c2 14 add $0x14, íx

80483de: 8b 85 58 fe ff ff mov 0xfffffe58(?p), êx 80483e4: 03 02add (íx), êx

80483e6: 89 85 74 fe ff ff mov êx, 0xfffffe74(?p)80483ec: 8b 55 08mov 0x8(?p), íx 80483ef: 83 c2 44add $0x44, íx

80483f2: 8b 85 c8 fe ff ff mov 0xfffffec8(?p), êx 80483f8: 89 02 mov êx, (íx) 80483fa: 8b 45 10mov 0x10(?p), êx 80483fd: 03 45 0cadd 0xc(?p), êx

8048400: 89 85 ec fe ff ffmov êx, 0xfffffeec(?p) 8048406: 8b 45 08 mov 0x8(?p), êx 8048409: 83 c0 20 add $0x20, êx

18.假设以下C语言函数compare_str_len用来判断两个字符串的长度,当字符串str1的长度大于str2的

长度时函数返回值为1,否则为0。

1 int compare_str_len(char *str1, char *str2)2 { 3return strlen(str1) - strlen(str2) > 0;4}

已知C语言标准库函数strlen原型声明为“size_t strlen(const char *s);”,其中,size_t被定义为unsigned int类型。请问:函数compare_str_len在什么情况下返回的结果不正确?为什么?为使函数正确返回结果应如何修改代码? 19.考虑以下C语言程序代码:

1 int func1(unsigned word) 2 { 3return(int) (( word <> 24); 4 }

5 int func2(unsigned word)

6 { 7return( (int) word <> 24; 8 }

假设在一个32位机器上执行这些函数,该机器使用二进制补码表示带符号整数。无符号数采用逻辑移位,带符号整数采用算术移位。请填写表2.14,并说明函数func1和func2的功能。

表2.14 题19用表

w 机器数 值 127 128 255 256 机器数 func1(w) 值 机器数 func2(w) 值 20.填写表2.15,注意对比无符号整数和带符号整数的乘法结果,以及截断操作前、后的结果。

表2.15 题20用表

模式 无符号 带符号 无符号 带符号 无符号 带符号 x 机器数 110 110 001 001 111 111 值 机器数 010 010 111 111 111 111 y 值 x×y(截断前) 机器数 值 x×y(截断后) 机器数 值

21.以下是两段C语言代码,函数arith( )是直接用C语言写的,而optarith( )是对arith( )函数以某个确定

的M和N编译生成的机器代码反编译生成的。根据optarith( ),可以推断函数arith( ) 中M和N的值各是多少?

#defineM #defineN

intarith (int x,int y) {

intresult = 0 ;

result = x*M + y/N; return result; }

int optarith ( int x,int y) {

intt = x;x << = 4;x – = t;

if ( y >2;

return x+y; }

22. 下列几种情况所能表示的数的范围是什么?

(1) 16位无符号整数

(2) 16位补码表示的带符号整数

(3) 下述格式的浮点数(基数为2,移码的偏置常数为128)

数符 尾数 阶码

8位移码 7位原码数值部分

23. 以IEEE 754单精度浮点数格式表示下列十进制数。

+1.75,+19,–1/8,258

24.设一个变量的值为4098,要求分别用32位补码整数和IEEE 754单精度浮点格式表示该变量(结果

用十六进制形式表示),并说明哪段二进制位序列在两种表示中完全相同,为什么会相同? 25.设一个变量的值为–2 147 483 647(提示:2 147 483 647=231-1),要求分别用32位补码整数和IEEE754

单精度浮点格式表示该变量(结果用十六进制形式表示),并说明哪种表示其值完全精确,哪种表示的是近似值。

26.下表给出了有关IEEE 754浮点格式表示中一些重要的非负数的取值,表中已经有最大规格化数的相

应内容,要求填入其他浮点数格式的相应内容。

表2.16 题26用表

单精度 项目 0 1 最大规格化数 最小规格化数 最大非规格化数 最小非规格化数 +∞ NaN 阶码 11111110 尾数 1…11 以2的幂次表示的值 (2–2-23)×2127 以10的幂次表示的值 3.4×1038 双精度 以2的幂次 表示的值 (2–2-52)×21023 以10的幂次 表示的值 1.8×10308 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型变量(用IEEE754单精度浮点数表

示),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行改为以下两个语句

想了解更多实用资料的资讯,请访问:实用资料
下载文档

看过《第二章习题-ddg》的人还看了以下文章

延伸阅读

《悲惨世界》读后感800字  在书中,出狱后的冉阿让背负着囚犯的身份,饱受着他人的歧视。社会的不公与排斥,一点点的磨灭了他重新做人的希望,改过向善的信心。是慈悲为怀的主教伸出慷慨的,无私的援助之手

量子动力学与信息“量子缠绕”是科学家们在微观粒子世界中发现的一种神秘的现象。处于量子缠绕态的粒子,相互之间似乎“心有灵犀”,无论相距多远,对其中一个粒子的干扰会瞬时地影响到量子缠绕态中的其它粒子。“量

幼儿中班教学教育工作总结篇1  带着园长的信任和自己对幼教这份工作的热爱,这个学期,担任了中一班班主任一职,和刘老师搭配成一个新的组合,非常有默契并尽心尽责、圆满地完成了这个学期的工作。回顾这五个月的

【#教案# 导语】本文是美国作家大卫·欧文回忆自己少年时代学习生活时写的一篇文章。它叙述了科学课上怀特森老师运用“故弄玄虚策略”,教会学生“质疑”的故事,塑造了一个对学生产生了深远影响而又独具一格的老

铁运安全高于一切护路责任重于泰山,人民铁路人民护护好铁路为人民,本站小编整理了“铁路护路宣传口号”仅供参考,希望能帮助到大家!  铁路护路宣传口号【一】  1. 铁运安全高于一切 护路责任重于泰山  

植树节团日活动总结范文(精选5篇)植树节团日活动总结范文 篇1为了进一步宣传“3.12植树节”活动,我班积极开展了“种下一片绿色,收获一份希望”的主题团日活动。在这次活动中,虽然时间已经过了3月12日

在拿到《习近平谈治国理政(第二卷)》的时候,我突然想起有位县公司支部书记曾问我:随着全面从严治党不断向纵深推进,基层党建工作的规定动作越来越多,那作为基层单位党、政一把手,应该如何划分自己的时间精力抓

有关后勤部工作计划书一、指导思想后勤处坚持为集团服务的宗旨,加强后勤工作人员的队伍建设,在新的一年里要使全体职工的工作岗位进一步明确,责任清楚、共同提高、真抓实干、求实创新,后勤部工作计划书。认真做好

优美的妇女节微信祝福语21句你是当代花木兰,女儿身躯当自强。工作单位肯吃苦,回家琐事一人揽。穿戴打扮不一般,红妆着身好美艳。远看谁家大姑娘,近前方晓家内贤。愿你三八节,美若天仙潇洒走。下面是小编帮大家整

以下是为大家整理的关于乡镇2023年群众和信访工作总结的文章3篇,欢迎大家参考查阅!第1篇:乡镇2023年群众和信访工作总结  20xx年以来,开发区信访