1、计算机学科专业基础综合组成原理-14 及答案解析(总分:100.00,做题时间:90 分钟)一、单项选择题(总题数:27,分数:48.00)1.判断加减法溢出时,可采用判断进位的方式,如果符号位的进位为 C 0 ,最高位的进位为 C 1 ,产生溢出的条件是_。 C 0 产生进位 C 1 产生进位 C 0 、C 1 都产生进位 C 0 、C 1 都不产生进位 C 0 产生进位,C 1 不产生进位 C 0 不产生进位,C 1 产生进位(分数:1.00)A.和B.C.D.和2.在补码的加减法中,用两位符号位判断溢出,两位符号位 S S1 S S2 =10 时,表示_。(分数:1.00)A.结果为正数
2、,无溢出B.结果正溢出C.结果负溢出D.结果为负数,无溢出3.若X 补 =X 0 ,X 1 X 2 X n ,其中 X 0 为符号位,X 1 为最高数位。若_,则当补码左移时,将会发生溢出。(分数:1.00)A.X0=X1B.X0X1C.X1=0D.X1=14.某字长为 8 位的计算机中,已知整型变量 x、y 的机器数分别为x 补 =1 1110100,y 补 =10110000。若整型变量 z=2*x+y/2,则 z 的机器数为_。(分数:1.00)A.1 1000000B.0 0100100C.1 0101010D.溢出5.若 x=103,y=-25,则下列表达式采用 8 位定点补码运算实
3、现时,会发生溢出的是_。(分数:1.00)A.x+yB.-x+yC.x-yD.-x-y6.原码乘法是_。(分数:1.00)A.先取操作数绝对值相乘,符号位单独处理B.用原码表示操作数,然后直接相乘C.被乘数用原码表示,乘数去绝对值,然后相乘D.乘数用原码表示,被乘数去绝对值,然后相乘7.x、y 为定点整数,其格式为 1 位符号位,n 位数值位,若采用补码一位乘法实现乘法运算,则最多需要_次加法运算。(分数:2.00)A.n-1BnC.n+1D.n+28.在原码一位乘法中,_。(分数:2.00)A.符号位参加运算B.符号位不参加运算C.符号位参加运算,并根据运算结果改变结果中的符号位D.符号位不
4、参加运算,并根据运算结果确定结果中的符号9.原码乘法时,符号位单独处理乘积的方式是_。(分数:2.00)A.两个操作数符号相“与”B.两个操作数符号相“或”C.两个操作数符号相“异或”D.两个操作数中绝对值较大数的符号10.实现 N 位(不包括符号位)补码一位乘时,乘积为_位。(分数:2.00)ANB.N+1C.2ND.2N+111.在原码不恢复余数除法(又称原码加减交替法)的算法中,_。(分数:2.00)A.每步操作后,若不够减,则需恢复余数B.若为负商,则恢复余数C.整个算法过程中,从不恢复余数D.仅当最后一步不够减时,才恢复一次余数12.下列关于补码除法说法正确的是_。(分数:2.00)
5、A.补码不恢复除法中,够减商 0,不够减商 1B.补码不恢复余数除法中,异号相除时,够减商 0,不够减商 1C.补码不恢复除法中,够减商 1,不够减商 0D.以上都不对13.在计算机中,通常用来表示主存地址的是_。(分数:2.00)A.移码B.补码C.原码D.无符号数14.由 3 个“1”和 5 个“0”组成的 8 位二进制补码,能表示的最小整数是_。(分数:2.00)A.-126B.-125C.-32D.-315.某计算机字长为 32 位,按字节编址,采用小端(Little Endian)方式存放数据。假定有一个 double 型变量,其机器数表示为 1122 3344 5566 7788H
6、,存放在 0000 8040H 开始的连续存储单元中,则存储单元0000 8046H 中存放的是_。(分数:2.00)A.22HB.33HC.77HD.66H16.在 C 语言中,不同类型的数据混合运算中,要先转换成同一类型后进行运算。设一表达式中包含有int、long、char 和 double 类型的变量和数据,则表达式最后的运算结果是_,这 4 种类型数据的转换规律是_。(分数:2.00)A.long,int-char-double-longB.long,char-int-long-doubleC.double,char-int-long-doubleD.double,char-int-
7、double-long17.浮点数加、减运算过程一般包括对阶、尾数运算、规格化、舍入和判溢出等步骤。设浮点数的阶码和尾数均采用补码表示,且位数分别为 5 位和 7 位(均含 2 位符号位)。若有两个数 X=2 7 29/32,Y=2 5 5/8,则用浮点加法计算 X+Y 的最终结果是_。(分数:2.00)A.00111 1100010B.00111 0100010C.01000 0010001D.发生溢出18.假定变量 i、f 和 d 的数据类型分别为 int、float 和 double(int 用补码表示,float 和 double 分别用 IEEE 754 单精度和双精度浮点数格式表示
8、),已知 i=785、f=1.5678E3、d=1.5E100,若在 32 位机器中执行下列关系表达式,则结果为“真”的是_。 i=(int)(float)i f=(float)(int)f f=(float)(double)f (d+f)-d=f(分数:2.00)A.仅和B.仅和C.仅和D.仅和19.float 型数据通常用 IEEE 754 单精度浮点数格式表示。若编译器将 float 型变量 x 分配在一个 32 位浮点寄存器 FR1 中,且 x=-8.25,则 FR1 的内容是_。(分数:2.00)A.C104 0000HB.C242 0000HC.C184 0000HD.C1C2 0
9、000H20.float 类型(即 IEEE754 单精度浮点数格式)能表示的最大正整数是_。 A.2126-2103 B.2127-2104 C.2127-2103 D.2128-2104(分数:2.00)A.B.C.D.21.长度相同但格式不同的两种浮点数,假设前者阶码长、尾数短,后者阶码短、尾数长,其他规定均相同,则它们可表示的数的范围和精度为_。(分数:2.00)A.两者可表示的数的范围和精度相同B.前者可表示的数的范围大但精度低C.后者可表示的数的范围大且精度高D.前者可表示的数的范围大且精度高22.长度相同、格式相同的两种浮点数,假设前者基数大,后者基数小,其他规定均相同,则它们可
10、表示的数的范围和精度为_。(分数:2.00)A.两者可表示的数的范围和精度相同B.前者可表示的数的范围大但精度低C.后者可表示的数的范围大且精度高D.前者可表示的数的范围大且精度高23.下列说法中正确的是_。(分数:2.00)A.采用变形补码进行加减法运算可以避免溢出B.只有定点数运算才可能溢出,浮点数运算不会产生溢出C.定点数和浮点数运算都可能产生溢出D.两个正数相加时一定产生溢出24.在规格化浮点运算中,若某浮点数为 2 5 1.10101,其中尾数为补码表示,则该数_。(分数:2.00)A.不需规格化B.需右移规格化C.需将尾数左移一位规格化D.需将尾数左移两位规格化25.浮点数格式如下
11、:7 位阶码,1 位数符,8 位尾数。若阶码用移码,尾数用补码表示,则浮点数所能表示数的范围是_。 A.-263-(1-2-8)263 B.-264(1-2 -7)264 C.-(1-2-8)2632 63 D.-(1-2-7)264(1-2 -8)263(分数:2.00)A.B.C.D.26.设浮点数阶的基数为 8,尾数用模 4 补码表示。试指出下列浮点数中哪个是规格化数?_(分数:2.00)A.11.111000B.00.000111C.11.101010D.11.11110127.下列关于对阶操作说法正确的是_。(分数:2.00)A.在浮点加减运算的对阶操作中,若阶码减小,则尾数左移B.
12、在浮点加减运算的对阶操作中,若阶码增大,则尾数右移;若阶码减小,则尾数左移C.在浮点加减运算的对阶操作中,若阶码增大,则尾数右移D.以上都不对二、综合应用题(总题数:7,分数:52.00)已知 32 位寄存器 R1 中存放的变量 x 的机器码为 8000 0004H,请问:(分数:8.00)(1).当 x 是无符号整数时,x 的真值是多少?x/2 的真值是多少?x/2 存放在 R1 中的机器码是什么?2x 的真值是多少?2x 存放在 R1 中的机器码是什么?(分数:4.00)_(2).当 x 是带符号整数(补码)时,x 的真值是多少?x/2 的真值是多少?x/2 存放在 R1 中的机器码是什么
13、?2x 的真值是多少?2x 存放在 R1 中的机器码是什么?(分数:4.00)_假定在一个 8 位字长的计算机中运行如下 C 程序段: unsigned int x=134; unsigned int y=246; int m=x; int n=y; unsigned int z1=x-y; unsigned int z2=x+y; int k1=m-n; int k2=m+n; 若编译器编译时将 8 个 8 位寄存器 R1R8 分别分配给变量 x、y m、n、z1、z2、k1 和 k2。请回答下列问题(提示:带符号整数用补码表示)。(分数:16.00)(1).执行上述程序段后,寄存器 R1、
14、R5 和 R6 的内容分别是什么(用十六进制表示)?(分数:4.00)_(2).执行上述程序段后,变量 m 和 k1 的值分别是多少(用十进制表示)?(分数:4.00)_(3).上述程序段涉及带符号整数加/减、无符号整数加/减运算,这四种运算能否利用同一个加法器辅助电路实现?简述理由。(分数:4.00)_(4).计算机内部如何判断带符号整数加/减运算的结果是否发生溢出?上述程序段中,哪些带符号整数运算语句的执行结果会发生溢出?(分数:4.00)_28.设X 补 =0.1011、Y 补 =1.1110,求X+Y 补 和X-Y 补 的值。 (分数:4.00)_29.证明:在定点小数表示中,X 补
15、+Y 补 =2+(X+Y)=X+Y 补 。 (分数:4.00)_30.已知:A=-1001、B=-0101,求A+B 补 。 (分数:4.00)_31.设 x=+11/16、y=+3/16,试用变形补码计算 x+y。 (分数:4.00)_假设有两个整数 x 和 y,x=-68,y=-80,采用补码形式(含 1 位符号位)表示,x 和 y 分别存放在寄存器 A和 B 中。另外,还有两个寄存器 C 和 D。A、B、C、D 都是 8 位的寄存器。请回答下列问题(要求最终用十六进制表示二进制序列):(分数:12.00)(1).寄存器 A 和 B 中的内容分别是什么?(分数:4.00)_(2).x 和
16、y 相加后的结果存放在寄存器 C 中,寄存器 C 中的内容是什么? 此时,溢出标志位 OF 是什么?符号标志位 SF 是什么?进位标志位 CF 是什么?(分数:4.00)_(3).x 和 y 相减后的结果存放在寄存器 D 中,寄存器 D 中的内容是什么? 此时,溢出标志位 OF 是什么?符号标志位 SF 是什么?进位标志位 CF 是什么?(分数:4.00)_计算机学科专业基础综合组成原理-14 答案解析(总分:100.00,做题时间:90 分钟)一、单项选择题(总题数:27,分数:48.00)1.判断加减法溢出时,可采用判断进位的方式,如果符号位的进位为 C 0 ,最高位的进位为 C 1 ,产
17、生溢出的条件是_。 C 0 产生进位 C 1 产生进位 C 0 、C 1 都产生进位 C 0 、C 1 都不产生进位 C 0 产生进位,C 1 不产生进位 C 0 不产生进位,C 1 产生进位(分数:1.00)A.和B.C.D.和 解析:解析 采用进位位来判断溢出时,当最高有效位进位和符号位进位的值不相同时才产生溢出。两正数相加,当最高有效位产生进位(C 1 =1)而符号位不产生进位(C 0 =0)时,发生正溢出;两负数相加,当最高有效位不产生进位(C 1 =0)而符号位产生进位(C 0 =1)时产生负溢出。 故溢出条件: 2.在补码的加减法中,用两位符号位判断溢出,两位符号位 S S1 S
18、S2 =10 时,表示_。(分数:1.00)A.结果为正数,无溢出B.结果正溢出C.结果负溢出 D.结果为负数,无溢出解析:解析 用两位符号位判断溢出时,当两个符号位不同时表示溢出,01 时表示正溢出;10 时表示负溢出;当两个符号位相同时(11 或 00)表示没有溢出。3.若X 补 =X 0 ,X 1 X 2 X n ,其中 X 0 为符号位,X 1 为最高数位。若_,则当补码左移时,将会发生溢出。(分数:1.00)A.X0=X1B.X0X1 C.X1=0D.X1=1解析:解析 溢出判别法有两种适用于此种情况:一是加一个符号位变为双符号位,然后左移,如果两符号位不同则溢出,故而 X 0 X1
19、 时溢出;二是数值位最高位进位和符号位进位不同则溢出,同样可知X 0 X 1 时溢出。4.某字长为 8 位的计算机中,已知整型变量 x、y 的机器数分别为x 补 =1 1110100,y 补 =10110000。若整型变量 z=2*x+y/2,则 z 的机器数为_。(分数:1.00)A.1 1000000 B.0 0100100C.1 0101010D.溢出解析:解析 x * 2,将 x 算术左移一位为 1 1101000:y/2,将 y 算术右移一位为 1 0011000,均无溢出或丢失精度。补码相加为 1 1101000+1 0011000=1 1000000,亦无溢出。5.若 x=103
20、,y=-25,则下列表达式采用 8 位定点补码运算实现时,会发生溢出的是_。(分数:1.00)A.x+yB.-x+yC.x-y D.-x-y解析:解析 8 位定点补码表示的数据范围为-128127,若运算结果超出这个范围则会溢出,A 选项x+y=103-25=78,符合范围,A 排除;B 选项-x+y=-103-25=-128,符合范围,B 排除;D 选项-x-y=-103+25=-78,符合范围,D 排除;C 选项 x-y=103+25=128,超过了 127,选 C。6.原码乘法是_。(分数:1.00)A.先取操作数绝对值相乘,符号位单独处理 B.用原码表示操作数,然后直接相乘C.被乘数用
21、原码表示,乘数去绝对值,然后相乘D.乘数用原码表示,被乘数去绝对值,然后相乘解析:解析 原码一位乘法中,符号位与数值位是分开进行运算的。运算结果的数值部分是乘数与被乘数数值位的乘积,符号是乘数与被乘数符号位的异或。7.x、y 为定点整数,其格式为 1 位符号位,n 位数值位,若采用补码一位乘法实现乘法运算,则最多需要_次加法运算。(分数:2.00)A.n-1BnC.n+1 D.n+2解析:解析 补码一位乘法中,最多需要 n 次移位,n+1 次加法运算。原码乘法移位和加法运算最多均为 n 次。8.在原码一位乘法中,_。(分数:2.00)A.符号位参加运算B.符号位不参加运算 C.符号位参加运算,
22、并根据运算结果改变结果中的符号位D.符号位不参加运算,并根据运算结果确定结果中的符号解析:解析 在原码一位乘法中,符号位不参加运算,符号位单独处理,同号为正,异号为负。9.原码乘法时,符号位单独处理乘积的方式是_。(分数:2.00)A.两个操作数符号相“与”B.两个操作数符号相“或”C.两个操作数符号相“异或” D.两个操作数中绝对值较大数的符号解析:解析 原码的符号位为 1 表示负数,为 0 表示正数。原码乘法时,符号位单独处理,乘积的符号是两个操作数符号相“异或”,同号为正,异号为负。 凡是原码运算,不论加减乘除,符号位都单独处理,其中乘除运算的结果符号由参加运算的两个操作数符号相“异或”
23、得到。10.实现 N 位(不包括符号位)补码一位乘时,乘积为_位。(分数:2.00)ANB.N+1C.2ND.2N+1 解析:解析 补码一位乘法运算过程中一共向右移位 N 次,加上原先的 N 位,一共是 2N 位数值位,因乘积结果需加上符号位,故共 2N+1 位。11.在原码不恢复余数除法(又称原码加减交替法)的算法中,_。(分数:2.00)A.每步操作后,若不够减,则需恢复余数B.若为负商,则恢复余数C.整个算法过程中,从不恢复余数D.仅当最后一步不够减时,才恢复一次余数 解析:解析 原码不恢复余数除法即加减交替法,只在最终余数为负时,才需要恢复余数。12.下列关于补码除法说法正确的是_。(
24、分数:2.00)A.补码不恢复除法中,够减商 0,不够减商 1B.补码不恢复余数除法中,异号相除时,够减商 0,不够减商 1 C.补码不恢复除法中,够减商 1,不够减商 0D.以上都不对解析:解析 补码除法(不恢复余数法/加减交替法),异号相除是看够不够减,然后上商,够减则商 0,不够减商 1。详见唐朔飞计算机组成原理教材。13.在计算机中,通常用来表示主存地址的是_。(分数:2.00)A.移码B.补码C.原码D.无符号数 解析:解析 主存地址都是正数,因此不需要符号位,故直接采用无符号数表示。14.由 3 个“1”和 5 个“0”组成的 8 位二进制补码,能表示的最小整数是_。(分数:2.0
25、0)A.-126B.-125 C.-32D.-3解析:解析 补码整数表示时,负数的符号位为 1,数值位按位取反,末位加 1,因此剩下的 2 个“1”在最低位时,表示的是最小整数,为 10000011,转换成真值为-125。15.某计算机字长为 32 位,按字节编址,采用小端(Little Endian)方式存放数据。假定有一个 double 型变量,其机器数表示为 1122 3344 5566 7788H,存放在 0000 8040H 开始的连续存储单元中,则存储单元0000 8046H 中存放的是_。(分数:2.00)A.22H B.33HC.77HD.66H解析:解析 大端方式:一个字中的
26、高位字节(Byte)存放在内存中这个字区域的低地址处。小端方式:一个字中的低位字节(Byte)存放在内存中这个字区域的低地址处。依此分析,各字节的存储分配如下表所示: 地址 0000 8040H 0000 8041H 0000 8042H 0000 8043H 内容 88H 77H 66H 55H 地址 0000 8044H 0000 8045H 0000 8046H 0000 8047H 内容 44H 33H 22H 11H 从而存储单元 0000 8046H 中存放的是:22H。16.在 C 语言中,不同类型的数据混合运算中,要先转换成同一类型后进行运算。设一表达式中包含有int、long
27、、char 和 double 类型的变量和数据,则表达式最后的运算结果是_,这 4 种类型数据的转换规律是_。(分数:2.00)A.long,int-char-double-longB.long,char-int-long-doubleC.double,char-int-long-double D.double,char-int-double-long解析:解析 不同类型数据的混合运算时,遵循的原则是“类型提升”,即较低类型转换为较高类型,最终结果为 double 类型。4 种类型数据转换规律为 charintlongdouble。 如一个 long 型数据与一个 int 型数据一起运算,需先
28、将 int 型转换为 long 型,然后两者再进行运算,结果为 long 型。如果 float 型和 double 型数据一起运算,虽然它们同为实型,但两者精度不同,仍要先将float 型转换成 double 型再进行运算,结果亦为 double 型。所有这些转换都是由系统自动进行的,这种转换通常称为隐式转换。 注意在强制类型转换中,从 int 转换为 float 时,虽然不会发生溢出,但由于尾数位数的关系,可能有数据舍入,而转换为 double 则能保留精度。double 转换为 float 亦是如此。从 float 或 double 转换为 int时,小数部分被截断,且由于 int 的表示
29、范围更小,还可能发生溢出。17.浮点数加、减运算过程一般包括对阶、尾数运算、规格化、舍入和判溢出等步骤。设浮点数的阶码和尾数均采用补码表示,且位数分别为 5 位和 7 位(均含 2 位符号位)。若有两个数 X=2 7 29/32,Y=2 5 5/8,则用浮点加法计算 X+Y 的最终结果是_。(分数:2.00)A.00111 1100010B.00111 0100010C.01000 0010001D.发生溢出 解析:解析 X 的浮点数格式为 00,111;00,11101(分号前为阶码,分号后为尾数),Y 的浮点数格式为 00,101;00,10100。然后根据浮点数的加法步骤进行运算。 对阶
30、。X、Y 阶码相减,即 00,111-00,101=00,11+11,0111=00,010,可知 X 的阶码比 Y,的价码大2(这一步可直接目测)。根据小阶向大阶看齐的原则,将 y 的阶码加 2,尾数右移 2 位,将 Y 变为00,111;00,00101。 尾数相加。即 00,11101+00,00101=01,00010,尾数相加结果符号位为 01,故需右规。 规格化。将尾数右移 1 位,阶码加 1,得 X+Y 为 01,000;00,10001。 判溢出。阶码符号位为 01,说明发生溢出。 本题容易误选选项 B、C,这是因为选项 B、C 本身并没有计算错误,只是它们不是最终结果,选项
31、B 少了第 3 和第 4 步,选项 C 少了第 4 步。18.假定变量 i、f 和 d 的数据类型分别为 int、float 和 double(int 用补码表示,float 和 double 分别用 IEEE 754 单精度和双精度浮点数格式表示),已知 i=785、f=1.5678E3、d=1.5E100,若在 32 位机器中执行下列关系表达式,则结果为“真”的是_。 i=(int)(float)i f=(float)(int)f f=(float)(double)f (d+f)-d=f(分数:2.00)A.仅和B.仅和 C.仅和D.仅和解析:解析 题中三种数据类型强制类型转换的顺序为 i
32、nt-float-double,int 表示的类型为整数,如果将 float 转换为 int,小数位部分会被舍去,而 int 是精确到 32 位的整数,float 只保存到 1+23 位,故一个长为 32 位的 int 整数在转换为 float 时也会有损失,但 i1024(10 位),因此,正确。double的精度和范围都比 float 大,float 转换为 double 不会有损失,正确。对于,初看似乎没有问题,但浮点运算 d+f 时需要对阶,对阶后 f 的尾数有效位被舍去而变为 0,故 d+f 仍然为 d,再减去 d 后结果为 0,故结果不为真。 从 int 转换为 float 时,虽
33、然不会发生溢出,但由于尾数位数的关系,可能有数据舍入,而转换为double 则能保留精度。19.float 型数据通常用 IEEE 754 单精度浮点数格式表示。若编译器将 float 型变量 x 分配在一个 32 位浮点寄存器 FR1 中,且 x=-8.25,则 FR1 的内容是_。(分数:2.00)A.C104 0000H B.C242 0000HC.C184 0000HD.C1C2 0000H解析:解析 本题题意即考查 IEEE754 单精度浮点数的表示。先将 x 转换成二进制为-1000.01=-1.000 012 3 ,其次计算阶码 E,根据 IEEE754 单精度浮点数格式,有 E
34、-127=3,故 E=130,转换成二进制为1000 0010。最后,根据 IEEE754 标准,最高位的“1”是被隐藏的。 IEEE754 单精度浮点数格式:数符(1 位)+阶码(8 位)+尾数(23 位)。 故,FR1 内容为 1;1000 0010;0000 10000 0000 0000 0000 000。 即,1100 0001 0000 0100 0000 0000 0000 0000=C104000H。 本题易误选 D,未考虑 IEEE754 标准隐含最高位 1 的情况时,把偏置值认为是 128。20.float 类型(即 IEEE754 单精度浮点数格式)能表示的最大正整数是_
35、。 A.2126-2103 B.2127-2104 C.2127-2103 D.2128-2104(分数:2.00)A.B.C.D. 解析:解析 IEEE754 单精度浮点数是尾数用采取隐藏位策略的原码表示,且阶码用移码(偏置值为 127)表示的浮点数。规格化的短浮点数的真值为:(-1) S 1.m2 E-127 ,S 为符号位,阶码 E 的取值为1254(8 位表示),尾数 m 为 23 位,共 32 位;故 float 类型能表示的最大整数是 1.11112 254-127 =2 127 (2-2 -23 )=2 128 -2 104 ,故选 D。 另解:IEEE754 单精度浮点数的格式
36、如下图所示。 数符(1) 阶码(8) 尾数(23) 当表示最大正整数时:数符取 0;阶码取最大值为 127;尾数部分隐含了整数部分的“1”,23 位尾数全取 1 时尾数最大,为 2-2 -23 ,此时浮点数的大小为(2-2 -23 )2 127 =2 128 -2 104 。21.长度相同但格式不同的两种浮点数,假设前者阶码长、尾数短,后者阶码短、尾数长,其他规定均相同,则它们可表示的数的范围和精度为_。(分数:2.00)A.两者可表示的数的范围和精度相同B.前者可表示的数的范围大但精度低 C.后者可表示的数的范围大且精度高D.前者可表示的数的范围大且精度高解析:解析 在浮点数总位数不变的情况
37、下,阶码位数越多,则尾数位数越少。即:表示的数的范围越大,则精度越差(数变稀疏)。22.长度相同、格式相同的两种浮点数,假设前者基数大,后者基数小,其他规定均相同,则它们可表示的数的范围和精度为_。(分数:2.00)A.两者可表示的数的范围和精度相同B.前者可表示的数的范围大但精度低 C.后者可表示的数的范围大且精度高D.前者可表示的数的范围大且精度高解析:解析 基数越大,则范围越大,但精度变低(数变稀疏)。 基数越大,在运算中尾数右移的可能性越小,运算的精度损失越小。由于基数大时发生因对阶或尾数溢出需右移及规格化需左移的次数显著减少,因此运算速度可以提高。基数越大,可表示的数的个数越多。23
38、.下列说法中正确的是_。(分数:2.00)A.采用变形补码进行加减法运算可以避免溢出B.只有定点数运算才可能溢出,浮点数运算不会产生溢出C.定点数和浮点数运算都可能产生溢出 D.两个正数相加时一定产生溢出解析:解析 变形补码,即用两个二进制位来表示数字的符号位,其余与补码相同,所以并不可以避免溢出,A 错误。定点数和浮点数运算都可能产生溢出,但是溢出判断有区别,故 B 错误、C 正确。在定点运算中,当运算结果超出数的表示范围时,就发生溢出;浮点运算中,运算结果超出尾数表示范围却不一定溢出,只有规格化后阶码超出所能表示的范围时,才发生溢出,D 错误。24.在规格化浮点运算中,若某浮点数为 2 5
39、 1.10101,其中尾数为补码表示,则该数_。(分数:2.00)A.不需规格化B.需右移规格化C.需将尾数左移一位规格化 D.需将尾数左移两位规格化解析:解析 考查浮点数的规格化。当尾数为补码表示,且为 1.0形式时为规格化数,因此该尾数需左移一位,阶码同时应减 1,才为规格化数。25.浮点数格式如下:7 位阶码,1 位数符,8 位尾数。若阶码用移码,尾数用补码表示,则浮点数所能表示数的范围是_。 A.-263-(1-2-8)263 B.-264(1-2 -7)264 C.-(1-2-8)2632 63 D.-(1-2-7)264(1-2 -8)263(分数:2.00)A. B.C.D.解析
40、:解析 阶码使用移码表示,7 位阶码,故而能表示的最大值为 2 63 ;而尾数用补码表示,故而 8位尾数可表示的范围为-11-2 -8 ,故浮点数所能表示的范围为-2 63 (1-2 -8 )2 63 。26.设浮点数阶的基数为 8,尾数用模 4 补码表示。试指出下列浮点数中哪个是规格化数?_(分数:2.00)A.11.111000B.00.000111C.11.101010 D.11.111101解析:解析 当浮点数为正数时,数值位前 3 位不为全 0 时,是规格化数;当浮点数为负数时,数值位前 3 位不为全 1 时,是规格化数。模 4 补码表示即有两位符号位,即变形补码。27.下列关于对阶
41、操作说法正确的是_。(分数:2.00)A.在浮点加减运算的对阶操作中,若阶码减小,则尾数左移B.在浮点加减运算的对阶操作中,若阶码增大,则尾数右移;若阶码减小,则尾数左移C.在浮点加减运算的对阶操作中,若阶码增大,则尾数右移 D.以上都不对解析:解析 对阶操作,是将较小的阶码调整到与较大的阶码一致,故不存在阶码减小,尾数左移的情况,因而 A、B 项错。二、综合应用题(总题数:7,分数:52.00)已知 32 位寄存器 R1 中存放的变量 x 的机器码为 8000 0004H,请问:(分数:8.00)(1).当 x 是无符号整数时,x 的真值是多少?x/2 的真值是多少?x/2 存放在 R1 中
42、的机器码是什么?2x 的真值是多少?2x 存放在 R1 中的机器码是什么?(分数:4.00)_正确答案:()解析:对于无符号整数,所有二进制位均为数值位。x 的真值为 2 31 +2 2 。乘 2 和除 2,相当于无符号数的左移和右移运算。x/2 的真值为 2 30 +2,存放在 R1 中的机器码是 4000 0002H。2x 的真值为 2 32 +2 3 ,发生溢出,存放在 R1 中的机器码是 0000 0008H。(2).当 x 是带符号整数(补码)时,x 的真值是多少?x/2 的真值是多少?x/2 存放在 R1 中的机器码是什么?2x 的真值是多少?2x 存放在 R1 中的机器码是什么?
43、(分数:4.00)_正确答案:()解析:对于带符号数(补码),最高位为符号位。8000 0004H 对应二进制数的最高位为 1,为负数,真值为-0111 1111 1111 1111 1111 1111 1111 1100,即十进制的-(2 31 -2 2 )。乘 2 和除 2,相当于补码的左移和右移运算。x/2 的真值为-(2 30 -2),存放在 R1 中的机器码是 C000 0002H。2x 的真值为-(2 31 -2 3 ),发生溢出,存放在 R1 中的机器码是 8000 0008H。假定在一个 8 位字长的计算机中运行如下 C 程序段: unsigned int x=134; unsigned int y=246; int m=x; int n=y; unsigned int z1=x-y; unsigned int z2=x+y; int k1=m-n; int k2=m+n; 若编译器编译时将 8 个 8 位寄存器 R1R8 分别分配给变量 x、y m、n、z1、z2、k1 和 k2。请回答下列问题(提示:带符号整数用补码表示)。(分数:16.00)(1).执行上述程序段后,寄存器 R1、R5 和 R6 的内容分别