一、单选题
1.在以下编码中,零的表示唯一的是(C)
A.反码
B.原码
C.补码
D.原码和移码
解析:本题属于概念题,考察计算机数值数据的四种编码方式。计算机的四种常见编码为原码、反码、补码和移码,其中补码和移码对于零的表示是唯一的,本题中满足条件的只有C选项。
2.假设某数的真值为-100 1010B,在计算机内部表示为1011 0110B,该数采用的编码为(D)
A.移码
B.原码
C.反码
D.补码
解析:本题属于概念题,考察计算机数值数据的四种编码方式。-100 1010B的原码表示为1100 1010B,反码表示为1011 0101B,补码表示为1011 0110B,移码表示为0111 0110B,因此可以看出题中所给出的编码为补码。
3.考虑以下代码:
short si=-8196;
unsigned short usi=si;
如果采用2个字节表示short类型变量,则执行上述语句后usi的值为(C)
A.8196
B.34572
C.57340
D.57339
解析:本题属于理解题,考察无符号整型和整型之间的相互转换。Si=-8196,则用16位二进制原码表示为1010 0000 0000 0100B,转换为计算机中的补码表示为1101 1111 11111100B,第二句中usi的定义相当于对si的机器数进行了重新解释,解释为无符号短整型,因此其对应真值为2pow(16)-2pow(13)-2pow(1)-2pow(0)-1=65536-8192-2-1-1=57340。
4.关于IEEE754单精度数的描述,错误的是(B)
A.阶码采用移码
B.尾数采用补码
C.便于软件移植
D.尾数的有效数字为24位
解析:本题属于概念题,考察IEEE754单精度数的相关概念。IEEE754标准规定单精度数用32位进行表示,其中1位为符号位,8位为阶码,23位为尾数。阶码采用二进制移码表示方便对阶比较,尾数采用二进制原码纯小数表示。此题容易错选D项,但是IEEE754中尾数均包含一位隐藏位,因此用23位有效位可以表示24位有效数字。
5.float类型(即IEEE754单精度浮点数)所能表示的最大正数是(D)
A.2pow(126)-2pow(103)
B.2pow(127)-2pow(104)
C.2pow(127)-2pow(103)
D.2pow(128)-2pow(104)
解析:IEEE754标准中尾数的有效数字有24位,阶码的有效位数为8位。表示最大正数时,符号位为0;尾数各位除了最后一位外全取1,算上一位隐藏位1,为1+2pow(-1)+2pow(-2)+…2pow(-24)=2-2pow(-24),阶码除了最后一位外各位全取1(不能取全一,否则表示NaN或无穷大),为2pow(7)-1=127,因此最终结果为(2-2pow(-24))*2pow(127)=2pow(128)-2pow(104)。
6.在汉字字符的存储和检索中,需要采用(C)
A.输入码
B.区位码
C.内码
D.国标码
解析:本题属于概念题,考察计算机中汉字字符的存储与表示。输入码是指对每个汉字用按键进行相应的表示编码的用于输入的编码;内码是计算机内部用于表示每一个汉字的二进制编码;国标码是是指对每一个汉字的标准编码;区位码的作用与国标码类似,但是由于信息传输的原因和国标码之间存在一个固定差值。从广义上说,区位码和国标码都属于内码,此处内码显然是最佳选项。
7.假设计算机按照字节编址,采用小端模式,有一个float类型变量x的地址为FFFF C000H起始,x=12345678H,则FFFF C001H中的内容为(C)
A.1234H
B.34H
C.56H
D.5678H
解析:本题属于理解题,考察计算机中数据的存储。本题考察由于计算机按照字节编址,因此每一个地址应该对应八个二进制有效位,也就是两个十六进制位,因此排除AD。由于计算机采用小端方式编址,也就是最高有效位放在低位,所以起始地址FFFF C000H中存放的是78H,FFFF C001H中存放的内容是56H。
8.以下字符编码含有奇偶校验位,假设没有发生错误,采用奇校验时的字符编码为(C)
A.01010011
B.01100110
C.10110000
D.00110101
解析:本题属于理解题,考察奇偶检验的判定方法。奇检验的检验位结果为各数值位与1进行异或运算的结果,检验结果放在数值位之后(本题中为二进制数的第八位)。多个数异或的简单计算方法为:奇数个1则结果为1,偶数个1则结果为零。由此可知A选项的数值位共有3个1,再与1进行一次异或,检验结果应为0,错误;B选项数值位有4个1,检验结果应为1,错误;C选项数值位有3个1,检验结果应为0,正确;D选项数值位有3个1,检验结果应为0,错误。
9.一个C语言程序运行在32位计算机上,程序中有以下变量:整型变量s,x,z,短整型变量y,x=127,y=-9,执行x=x+y,s=x,z=y,则在计算机中s,z的机器码表示为(B)
A.s补码=0076H,z补码=0000FFF7H
B.s补码=00000076H,z补码=FFFFFFF7H
C.s补码=00000076H,z补码=FFF7H
D.s补码=00000076H,z补码=8009H
解析:本题属于理解题,考察计算机中数值类型数据的存储方式。执行完x=x+y后,x的真值变为127-9=118,将x赋值给整型变量s,则s的真值也为118,又因为整型变量int在计算机中以补码形式存储,因此s的机器码即为118对应的补码。由于118对应的补码在32位计算机上表示为0000…(24个0)
0111 0110B,转化为16进制即为0000 0076H,由此排除A选项。z是基本整型int而y是短整型,因此在将y的值赋值给z时真值不变但是会发生位扩展,由于基本整型的位扩展方式为符号扩展,因此扩展16位的内容均为1。y用16位进行补码表示的结果为1111 1111 1111 0111B,因此位扩展后用十六进制进行表示的结果为FFFF FFF7H,因此最终选择B选项。
本题也可以快速求解,由于s和z都是基本整型,因此用十六进制进行表示都需要八位,由此可以排除ACD选项,直接选择B。
10.下列采用偶检验的8位奇偶校验编码中正确的是(B)
A.10111010
B.11110011
C.01100111
D.00000001
解析:本题属于理解题,与之前的第八题类似,考察奇偶检验的判断方法。偶检验的检验位结果为各数值位进行异或运算的结果。A选项中数值位有5个1,因此检验结果应该为1,不满足;B选项中数值位有5个1,检验结果应该为1,满足;C选项中数值位有4个1,检验结果应该为0,不满足;D选项中数值位有0个1,检验结果应该为0,不满足。
11.下列关于浮点数规格化目的的描述中,不正确的是(C)
A.提高了存储数据的表示精度
B.简化了浮点数运算
C.防止运算溢出
D.使数据的表示方法唯一,简化了数据交换
解析:本题属于概念题,考察浮点数规格化的相关概念。需要记住的是,浮点数规格化可以提高数据的表示精度,简化了浮点数运算,同时使得数据的表示方法唯一,简化了数据交换。由此可知只有C选项不满足要求。
二、填空题
12.IEEE754标准规定的32位浮点数格式所能表示的最大规格化正数为()
解析:当表示最大正数时,符号位为0,8位阶码取得最大值,也就是除了最后一位取0,其他位置都取1(不能全取1是因为阶码全为1表示的是正负无穷和非数NaN),得到的结果为2pow(254-127)(减去127是因为阶码是用移码表示的,真值需要减去偏置常数127),23尾数部分也全部取1,算上一位隐藏位,尾数的结果为2-2pow(-23),所以最终的结果为(2-2pow(-23))*(2pow(127))=2pow(128)-2pow(104)。
13.十进制数-17在字长为16位的计算机中补码的16进制表示为()
解析:本题为简单理解题,考察十进制数的补码。-17的十六位原码表示为1000 0000 0001 0001B,因此其补码表示为1111 1111 1110 1111B。
三、简答题
14.写出-1/8的IEEE754单精度浮点数格式
解析:本题为理解题型,考察对于IEEE754标准的理解。对于这类转换类题型,首先将被转换的数字-1/8写成二进制的形式,就是-1.0*2pow(-3);接着按步骤确定符号位、阶码和尾数。由于是负数,符号位为-1;阶码为-3+127=124,用二进制表示即为0111 1100B(注意IEEE754标准中阶码的偏置常数都为2pow(n)-1而不是2pow(n));对于尾数,由于隐藏了最高位就是1,因此尾数23位均为0,综上所述,-1/8的单精度格式就是1 0111 1100 000…(23个0)B,转换成十六进制就是BE00 0000H。