第二章习题答案作业.docx
- 文档编号:24333752
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:12
- 大小:25.13KB
第二章习题答案作业.docx
《第二章习题答案作业.docx》由会员分享,可在线阅读,更多相关《第二章习题答案作业.docx(12页珍藏版)》请在冰豆网上搜索。
第二章习题答案作业
第二章习题答案
2
(1)为什么计算机内部采用二进制表示信息既然计算机内部所有信息都用二进制表示,为什么还要用到十六进制和八进制数
参考答案:
(略)
2(7)为什么计算机处理汉字时会涉及到不同的编码(如,输入码、内码、字模码)说明这些编码中哪些是用二进制编码,哪些不是用二进制编码,为什么
参考答案:
(略)
3.实现下列各数的转换。
(1)10=()2=()8=()16
(2)2=()10=()8=()16=()8421
(3)(010110018421=()10=()2=()16
(4)16=()10=()2
参考答案:
(1)10=(12=8=16
(2)2=10=8=16=(010001110101)8421
(3)(010110018421=10=…)2=…)16
(4)16=10=(01002
4.假定机器数为8位(1位符号,7位数值),写出下列各二进制数的原码和补码表示。
+,–,+,–,+,–,+0,–0
参考答案:
(后面添0)
原码补码
+:
–:
+:
溢出溢出
–:
溢出
+:
–:
+0:
–0:
5.假定机器数为8位(1位符号,7位数值),写出下列各二进制数的补码和移码表示。
+1001,–1001,+1,–1,+10100,–10100,+0,–0
参考答案:
(前面添0)
移码补码
+1001:
00001001
–1001:
01110111
+1:
00000001
–1:
0
+10100:
00010100
–10100:
01101100
+0:
00000000
–0:
00000000
6.已知[x]补,求x
(1)[x]补=
(2)[x]补=
(3)[x]补=(4)[x]补=
参考答案:
(1)[x]补=x=–
(2)[x]补=x=–B=–128
(3)[x]补=x=+
(4)[x]补=x=–101101B=–45
7.假定一台32位字长的机器中带符号整数用补码表示,浮点数用IEEE754标准表示,寄存器R1和R2的内容分别为R1:
0000017AH,R2:
FFFFF895H。
不同指令对寄存器进行不同的操作,因而,不同指令执行时寄存器内容对应的真值不同。
假定执行下列运算指令时,操作数为寄存器R1和R2的内容,则R1和R2中操作数的真值分别为多少
(1)无符号数加法指令
(2)带符号整数乘法指令
(3)单精度浮点数减法指令
参考答案:
R1=0000017AH=00000000000000000000000101111010
R2=FFFFF895H=11111111111111111111100010010101
(1)对于无符号数加法指令,R1和R2中是操作数的无符号数表示,因此,其真值分别为R1:
17AH,R2:
FFFFF895H。
(对应十进制分别为378、4294965397=232–1899)
(2)对于带符号整数乘法指令,R1和R2中是操作数的带符号整数补码表示,由最高位可知,R1为正数,R2为负数。
R1的真值为+17AH=378,R2的真值为–11101101011=–1899。
(3)R1:
符号位为0,表示其为正数,阶码为00000000,尾数部分为00000000000000101111010,故其为非规格化浮点数,指数为–126,尾数中没有隐藏的1,用十六进制表示尾数为+00000000001011110100=+,故R1表示的真值为+×2-126。
R2:
符号位为1,表示其为负数,阶码为11111111,尾数部分为11111111111100010010101,故其为全1阶码非0尾数,即是一个非数NaN。
8.假定机器M的字长为32位,用补码表示带符号整数。
下表第一列给出了在机器M上执行的C语言程序中的关系表达式,请参照已有的表栏内容完成表中后三栏内容的填写。
关系表达式
类型
结果
说明
0==0U
–1<0
–1<0U
47>–47–1
47U>–47–1
47>(int)48U
–1>–2
(unsigned)–1>–2
无
有
无
有
无
有
有
无
1
1
0
1
0
1
1
1
00…0B=00…0B
11…1B(–1)<00…0B(0)
11…1B(232–1)>00…0B(0)
011…1B(231–1)>100…0B(–231)
011…1B(231–1)<100…0B(231)
011…1B(231–1)>100…0B(–231)
11…1B(–1)>11…10B(–2)
11…1B(232–1)>11…10B(232–2)
9.以下是一个C语言程序,用来计算一个数组a中每个元素的和。
当参数len为0时,返回值应该是0,但是在机器上执行时,却发生了存储器访问异常。
请问这是什么原因造成的,并说明程序应该如何修改。
1floatsum_elements(floata[],unsignedlen)
2{
3inti;
4floatresult=0;
5
6for(i=0;i<=len–1;i++)
7result+=a[i];
8returnresult;
9}
参考答案:
参数len的类型是unsigned,所以,当len=0时,执行len-1的结果为11…1,是最大可表示的无符号数,因而,任何无符号数都比它小,使得循环体被不断执行,引起数组元素的访问越界,发生存储器访问异常。
只要将len声明为int型,或循环的测试条件改为i 10.设某浮点数格式为: 其中,移码的偏置常数为16,补码采用一位符号位,基数为4。 (1)用这种格式表示下列十进制数: +,+19,–1/8。 (2)写出该格式浮点数的表示范围,并与12位定点补码整数表示范围比较。 参考答案: (假定采用0舍1入法进行舍入) (1)+=+=×41,故阶码为1+16=17=10001B,尾数为+的补码, =×40=0。 130Q×41=×40 即,所以+表示为010001011100。 +19=+10011B=×43,故阶码为3+16=19=10011B,尾数为,所以+19表示为010011010011。 –1/8=–=–=–×4–1, 阶码为–1+16=15=01111B,尾数为–的补码,即,所以–1/8表示为101111100000。 (2)该格式浮点数表示的范围如下。 正数最大值: ×411111,即: ×415(≈230≈109) 正数最小值: ×400000,即: ×4–16(≈2–34≈10–10) 负数最大值: –×400000,即: –×4–16 负数最小值: –×411111,即: –×415 因此,该格式浮点数的数量级在10–10~109之间。 12位定点补码整数的表示范围为: –211~+(211–1),即: –2048~2047 由此可见,定点数和浮点数的表示范围相差非常大。 11.下列几种情况所能表示的数的范围是什么 (1)16位无符号整数 (2)16位原码定点小数 (3)16位补码定点小数 (4)16位补码定点整数 (5)下述格式的浮点数(基数为2,移码的偏置常数为128) 参考答案: (1)无符号整数: 0~216–1。 (2)原码定点小数: –(1–2–15)~+(1–2–15)。 (3)补码定点小数: –1~+(1–2–15)。 (4)补码定点整数: –32768~+32767。 (5)浮点数: 负数: –(1–2–7)×2+127~–2–7×2–128。 正数: +2–135~(1–2–7)×2+127。 12.以IEEE754单精度浮点数格式表示下列十进制数。 +,+19,–1/8,258 参考答案: +=+=×20,故阶码为0+127=01111111B,数符为0,尾数为…0,小数点前为隐藏位,所以+表示为00111111111000000000000000000000,用十六进制表示为3FE00000H。 +19=+10011B=+×24,故阶码为4+127=B,数符为0,尾数为…0,所以+19表示为000110000000000000000000,用十六进制表示为H。 –1/8=–=–=–×2–3,阶码为–3+127=01111100B,数符为1,尾数为…0,所以–1/8表示为10111110000000000000000000000000,用十六进制表示为BE000000H。 258=0B=×28,故阶码为8+127=B,数符为0,尾数为,所以258表示为000000010000000000000000,用十六进制表示为H。 13.设一个变量的值为6144,要求分别用32位补码整数和IEEE754单精度浮点格式表示该变量(结果用十六进制表示),并说明哪段二进制序列在两种表示中完全相同,为什么会相同 参考答案: 6144=+1100000000000B=+1.1×212 32位补码形式为: 00000000000000000001100000000000(00001800H) IEEE754单精度格式为: 010000000000000000000000(45C00000H) 蓝字部分为除隐藏位外的有效数字,因此,在两种表示中是相同的序列。 因为正数的补码和原码是一致的,所以除隐藏位外的有效数字都相同。 14.设一个变量的值为–6144,要求分别用32位补码整数和IEEE754单精度浮点格式表示该变量(结果用十六进制表示),并说明哪种表示其值完全精确,哪种表示的是近似值。 参考答案: –6144=–1100000000000B=–1.1×212 32位补码形式为: 11111111111111111110100000000000(FFFFE800H) IEEE754单精度格式为: 110000000000000000000000(C5C00000H) 32位补码形式能表示精确的值,浮点数表示的也是精确值,因为没有有效数字被截断。 15.下表给出了有关IEEE754浮点格式表示中一些重要数据的取值,表中已经有最大规格化数的相应内容,要求填入其他浮点数的相应内容。 (注: 表中a代表一个在1到10之间的正纯小数) 项目 阶码 尾数 单精度 双精度 以2的幂次表示的值 以10的幂次表示的值 以2的幂次表示的值 以10的幂次表示的值 0 1 最大规格化数 最小规格化数 最大非规化数 最小非规化数 +∞ NaN 00000000 01111111 00000001 00000000 00000000 0….00 0….00 1…11 0….00 1…11 0…01 0….00 非全0 0 1 (2–2–23)×2127 ×2–126 (1–2–23)×2–126 2–23×2–126=2–149 – – 0 1 a×1038 a×10–38 a×10–38 a×10–44 – – 0 1 (2–2–52)×21023 ×2–1022 (1–2–52)×2–1022 2–52×2–1022 – – 0 1 a×10308 a×10–308 a×10–308 a×10– – – 16.已知下列字符编码: A=1000001,a=1100001,0=0110000,求E、e、f、7、G、Z、5的7位ACSII码和第一位前加入奇校验位后的8位编码。 参考答案: E的ASCII码为‘A’+(‘E’–‘A’)=1000001+100=1000101,奇校验位P=0,第一位前加入奇校验位后的8位编码是01000101。 e的ASCII码为‘a’+(‘e’–‘a’)=1100001+100=1100101,奇校验位P=1,第一位前加入奇校验位后的8位编码是11100101。 f的ASCII码为‘a’+(‘f’–‘a’)=1100001+101=1100110,奇校验位P=1,第一位前加入奇校验位后的8位编码是11100110。 7的ASCII码为‘0’+(7-0)=0110000+111=0110111,奇校验位P=0,第一位前加入奇校验位后的8位编码是00110111。 G的ASCII码为‘A’+(‘G’–‘A’)=1000001+0110=1000111,奇校验位P=1,第一位前加入奇校验位后的8位编码是11000111。 Z的ASCII码为‘A’+(‘Z’–‘A’)=1000001+11001=1011010,奇校验位P=1,第一位前加入奇校验位后的8位编码是11011010。 5的ASCII码为‘0’+(5–0)=0110000+101=0110101,奇校验位P=1,第一位前加入奇校验位后的8位编码是10110101。 17.假定在一个程序中定义了变量x、y和i,其中,x和y是float型变量(用IEEE754单精度浮点数表示),i是16位short型变量(用补码表示)。 程序执行到某一时刻,x=–、y=12、i=–125,它们都被写到了主存(按字节编址),其地址分别是100,108和112。 请分别画出在大端机器和小端机器上变量x、y和i在内存的存放位置。 参考答案: –=–=–×23 x在机器内部的机器数为: 10100010…0(C1220000H) 12=+1100B=+×23 y在机器内部的机器数为: 0100…0(41400000H) –125=–1111101B i在机器内部的机器数为: 1111111110000011(FF83H) 大端机小端机 地址内容内容 100C1H00H 10122H00H 10200H22H 10300HC1H 10841H00H 10940H00H 11000H40H 11100H41H 112FFH83H 11383HFFH 18.假定某计算机的总线采用偶校验,每8位数据有一位校验位,若在32位数据线上传输的信息是8F3CAB96H,则对应的4个校验位应为什么若接受方收到的数据信息和校验位分别为873CAB96H和1010B,则说明发生了什么情况,并给出验证过程。 参考答案: 传输信息8F3CAB96H展开为10001111001111001010101110010110,每8位有一个偶校验位,因此,总线上发送方送出的4个校验位应该分别为1、0、1、0。 接受方的数据信息为873CAB96H,展开后为10000111001111001010101110010110,接收到的校验位分别为1、0、1、0。 在接受方进行校验判断如下: 根据接收到的数据信息计算出4个偶校验位分别为0、0、1、0,将该4位校验位分别和接收到的4位校验位进行异或,得到1、0、0、0,说明数据信息的第一个字节发生传输错误。 对照传输前、后的数据信息,第一字节8FH变成了87H,说明确实发生了传输错误,验证正确。 19.假定一个16位数据M16M15M14M13M12M11M10M9M8M7M6M5M4M3M2M1,写出16位数据的SEC码。 假定数据为0010100011001010,说明SEC码如何正确检测数据位5的错误。 参考答案: 对于16位数据,可以如下插入校验位: M16M15M14M13M12P5M11M10M9M8M7M6M5P4M4M3M2P3M1P2P1 其中Mi是原信息数据,Pi是加入的校验位,对于各个校验位的值可以如下计算 P1=M1⊕M2⊕M4⊕M5⊕M7⊕M9⊕M11⊕M12⊕M14⊕M16=1 P2=M1⊕M3⊕M4⊕M6⊕M7⊕M10⊕M11⊕M13⊕M14=1 P3=M2⊕M3⊕M4⊕M8⊕M9⊕M10⊕M11⊕M15⊕M16=1 P4=M5⊕M6⊕M7⊕M8⊕M9⊕M10⊕M11=0 P5=M12⊕M13⊕M14⊕M15⊕M16=0 所以此时P5P4P3P2P1=00111,第五位数据出错时,数据字变为: 0010100011011010,P5’P4’P3’P2’P1’=01110,故障字=00111⊕01110=01001,说明码字第9位出错,即M5出错。 20.假设要传送的数据信息为: 110010,若约定的生成多项式为: G(x)=x3+1,则校验码为多少假定在接收端接收到的数据信息为110011,说明如何正确检测其错误,写出检测过程。 参考答案: 原数据信息为110010,对应的报文多项式为M(x)=x5+x4+x,生成多项式的位数为4位,所以在原数据信息后面添加3个0,变为M’(x)=x3M(x)=x8+x7+x4,用M’(x)去模2除G(x),得到的余数为100,所以得到CRC码为110010100。 检测时,用接收到的CRC码去模2除生成多项式1001,若得到的余数为0,则表明正确,否则说明传输时发生了错误。 此题中接收到的CRC码为110011100(即数据110011加检验位100),显然,用110011100模2除1001,得到余数为001,不为0,说明传输时发生错误。 在网络通信中,一般不纠错,只要求重发。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二 习题 答案 作业