1、下列各种数制的数中,最小的数是()
A、(101001)2
B、(101001)BCD
C、(52)8
D、(233)16
解析:选B
对于A,1+23+25=1+8+32=41(十进制)
对于B,(101001)BCD=(0010 1001)BCD=>0010=2,1001=9=>29(十进制)
对于C,2+5*81=42(十进制)
对于D,3+3 *161+2 *162=3+48+258=309(十进制)
1、并行加法器中,每位全和的形成除与本位相加二数数值位有关外,还与()有关
A、低位数值大小
B、低位数的全和
C、高位数值大小
D、低位数送来的进位
2、算术逻辑单元的功能一般包括()
A、算术运算
B、逻辑运算
C、算术运算和逻辑运算
D、加法运算
解析:选C
ALU是一种功能较强的组合逻辑电路,它能进行多种算术运算和逻辑运算。
3、一个8位寄存器内的数值位11001010,进位标志寄存器C为0,若将此8位寄存器循环左移(不带进位位)1位,则该8位寄存器和标志寄存器内的数值分别为()
A、10010100 1
B、10010101 1
C、10010101 1
D、10010100 0
解析:选C
循环左移(不带进位位)时,最高位移出来的将被放在最低位和标志寄存器内。按照题来说,应该是10010101 1
循环左移(带进位位)时,最高位移出来的将被放在标志寄存器内,标志寄存器内原先的二进制被移到最低位。按照题来说,应该是10010100 1
3、关于模4补码,下列说法正确的是()
A、模4补码和模2补码不同,它更容易检查乘除运算中的溢出问题
B、每个模4补码存储时只需要一个符号位
C、存储每个模4补码需要两个符号位
D、模4补码,在算术与逻辑部件中为1个符号位
解析:选B
采用双符号位的是模4补码,采用单符号位的是模2补码。当双符号位相同时,表示没有溢出,反之则表示有溢出。因为双符号位只需要看计算结果中最高的两位是否相同即可,若相同则没有溢出,反之则有溢出【Ss1Ss2=00或11,无溢出;Ss1Ss2=10或01,有溢出】,而单符号位在判断是否有溢出时,需要将结果的符号位和两个运算数的符号位相比较,若相同则没有溢出,反之则有溢出【V=AsBs S s ‾ \overline{S~s~} S s + A s ‾ \overline{A~s~} A s B s ‾ \overline{B~s~} B s Ss,其中As、Bs、Ss分别代表运算数A、B和结果S的符号位。V=0,无溢出,V=1,有溢出】,显然更容易检查乘除运算中的溢出问题。
对于正常的没有溢出的数据,显然双符号位是相同的,在存储时完全可以只存储一位。
而在计算中,为了更容易地检测溢出问题,往往需要两个符号位,因此对于模4补码,在存储时只需要一位符号位,在计算时,需要两位符号位。
4、实现N位(不包括符号位)补码一位乘时,乘积为()位
A、N
B、N+1
C、2N
D、2N+1
解析:选D
例如x=-0.1101,y=0.1011,采用补码一位乘法,计算出的结果为:[x*y]补=1.01110001,一共2N+1位,其中包括了一位符号位。
如果实现N位(包括符号位)补码一位乘时,计算结果为2 *(N-1)+1=2N-1位
5、在原码不恢复余数法(又称原码加减交替法)的算法中,()
A、每步操作后,若不够减,则需恢复余数
B、若为负商,则恢复余数
C、整个算法过程中,从不恢复余数
D、仅当最后一步不够减时,才恢复一次余数
解析:选D
原码不恢复余数法,余数为负,商0左移,加除数的绝对值,余数为正,商1左移,减除数的绝对值。仅当最后一步不够减时,才恢复一次余数
原码不恢复余数法,余数为负,加除数的绝对值,商0左移,余数为正,商1左移,减除数的绝对值。最后一步不够减时,恢复也余数。
6、下列关于补码除法的说法中,正确的是()
A、补码不恢复除法中,够减商0,不够减商1
B、补码不恢复余数除法中,异号相除时,够减商0,不够减商1
C、补码不恢复除法中,够减商1,不够减商0
D、以上说法都不对
解析:选D
补码不恢复余数除法中,异号相除时,被除数+除数,此时若够减,证明除数和余数异号,因此商0(如:-2+1 => 110+001=111,此时结果为-1,除数为1,两者异号),若不够减,则证明除数和余数同号,因此商1(如:-1+2 => 111+010=001,此时结果为1,除数为2,两者同号)。
补码不恢复余数除法中,同号相除时,被除数-除数,此时若够减,证明除数和余数同号,因此商1(如:-2-(-1)=> 110+001=111,此时结果为-1,除数为-1,两者同号),若不够减,则证明除数和余数同号,因此商0(如:-1-(-2) => 111+010=001,此时结果为1,除数为-2,两者异号)。
7、下列关于各种移位的说法正确的是()
a.假设机器数采用反码表示,当机器数为负时,左移时最高数位丢0,结果出错;右移时最低数位丢0,影响精度
b.在算术移位的情况下,补码左移的前提条件是其原最高有效位与原符号位要相同
c.在算术移位的情况下,双符号位的移位操作只有低符号位需要参加移位操作
A、a、c
B、仅b
C、仅c
D、a、b、c
解析:选D
对于a,机器数为负数时,除了符号位,其余位取反得反码。例如-11->11011,反码:10100,算术左移->11001=>原码:10110=-6,数据错误,应该是-11* 2=-22;算术右移一位->11010=>10101=-5,应该是-11/2=-5.5,现在是-5,精度下降。
对于b,在算术移位的情况下,补码左移的前提条件是其原最高有效位与原符号位要相同。如果不相同,会发生数据错误。例如:-5的补码:1011,算术左移->1110=>-2,-3的补码:1101,算术左移一位->1010=>1110=-6=-3*2。因此补码左移的前提条件是其原最高有效位与原符号位要相同。
对于c,双符号位的高位代表真正的符号,低位用来判断是否发生溢出,在算术位移时,真正的符号位不参与位移,因此只有低符号位需要参加移位操作。
8、某计算机字长为8位,CPU中有一个8位加法器,已知无符号数x=69,y=38,如果在该加法器中计算x-y,则加法器的两个输入端信息和输入的低位进位信息分别为()
A、0100 0101、0010 0110、0
B、0100 0101、1101 1001、1
C、0100 0101、1101 1010、0
D、0100 0101、1101 1010、1
解析:选
x=69=64+4+1->0100 0101
y=38=32+4+2->0010 0110
因为计算的是x-y。因此转化成x+(-y),-y=-38,[-y]补=1101 1010=[-y]反+1。当低位进位信息为1时,代表做减法,输入1101 1001然后经过与低位进位信息相加后,变成1101 1010再与0100 0101相加,得到正确结果。当低位进位信息为0时,代表做加法,0100 0101+0010 0110,得到正确结果。
9、某计算机中有一个8位加法器,带符号整数x和y的机器数用补码表示,[x]补=F5H,[y]补=7EH,如果在该加法器中计算x-y,则加法器的低位进位输入信息和运算后的溢出标志OF分别是()
A、1、1
B、1、0
C、0、1
D、0、0
解析:选A
对于补码加法运算,sub=1,因此低位进位输入信息=1,因为计算的是x-y,因此需要计算[-y]补=1000 0010
x-y=[x]补+[-y]补=1111 0101+1000 0010=0111 0111=77H,计算数的符号位都是1,结果的符号位是0,因此有溢出,OF=1
10、减法指令“sub R1,R2,R3”的功能为“(R1) - (R2)—>R3”,该指令执行后将生成进位/借位标志CF和溢出标志OF。若(R1)=FFFF FFFFH,(R2)=FFFF FFF0H,则该减法指令执行后,CF与OF分别为()
A、CF=0,OF=0
B、CF=1,OF=0
C、CF=0,OF=1
D、CF=1,OF=1
解析:选A
R1=1111 1111 1111 1111 1111 1111 1111 1111
(R1)补=1000 0000 0000 0000 0000 0000 0000 0001
R2=1111 1111 1111 1111 1111 1111 1111 0000
-R2=0111 1111 1111 1111 1111 1111 1111 0000
(-R2)补=0111 1111 1111 1111 1111 1111 1111 0000
R3=R1-R2=(R1)补+ (-R2)补=1111 1111 1111 1111 1111 1111 1111 0001
R3 -R2 R1的符号位都相同,没有产生溢出,因此OF=0
在执行减法指令时,只需要考虑借位即可,并没有进位之说,R1>R2,因此没有借位。将R1-R2转化为(R1)补+ (-R2)补后,也可以通过看有无进位来判断CF的值,计算可知,没有进位,因此CF=0。
11、某32位计算机按字节编址,采用小端方式。若语句“int i=0;”对应指令的机器代码为“C7 45 FC 00 00 00 00”,则语句“int i=-64;”对应指令的机器代码是()
A、C7 45 FC C0 FF FF FF
B、C7 45 FC 0C FF FF FF
C、C7 45 FC FF FF FF C0
D、C7 45 FC FF FF FF 0C
解析:选A
大端方式:就是正常的方式。
小端方式:与大端相反。先按照正常的写出来,再调换顺序即可。
0 -> 00 00 00 00
-64 -> FF FF FF C0 然后调换顺序,C0放在最前面,倒数第二组FF放在第二高的位置,以此类推。
12、在按字节编址,采用小端方式的32位计算机中,按边界对齐方式为以下C语言结构型变量a分配存储空间,
struct record{
short x1;
int x2;
} a;
若a的首地址为2022 FE00H,a的成员变量x2的机器数为1234 0000H,则其中34H所在存储单元的地址是()
A、2020 FE03H
B、2020 FE04H
C、2020 FE05H
D、2020 FE06H
解析:选D
short是16位,int是32位,x1:xxxx 0000H(其中的0是用来补x1少的16位,因为要求边界对齐) x2:1234 0000H(其中的0是x2机器数本身的)。如下图所示:
下图为保留其他条件,仅将小端改为大端
1、某浮点机,采用规格化浮点数表示,阶码用移码表示(最高位代表符号位),尾数用原码表示。下列()的表示不是规格化浮点数
A、11111111,1.1000…00
B、0011111,1.0111…01
C、1000001,0.1111…01
D、0111111,0.1000…10
解析:选B
规格化浮点数:是指通过调整一个非规格化浮点数的尾数和阶码的大小,使非零的浮点数在尾数的最高位上保证是一个有效值。用补码表示时:小数点前后不一样,用原码表示时,小数点后一位始终为1。
移码和补码符号位相反,其余位都一样。
2、下列关于对阶操作说法正确的是()
A、在浮点加减运算的对阶操作中,若阶码减小,则尾数左移
B、在浮点加减运算的对阶操作中,若阶码增大,则尾数右移,若阶码减小,则尾数左移
C、在浮点加减运算的对阶操作中,若阶码增大,则尾数右移
D、以上都不对
解析:选C
对阶操作是将小的变大,没有将大的变小,因此不存在阶码减小一说。当阶码增大的时候,若小数点位置不变,则尾数向右移,若尾数不变,则小数点向左移。
3、假定采用IEEE754标准中的单精度浮点数格式表示一个数为45100000H,则该数的值是()
A、(+1.125)10 * 210
B、(+1.125)10 * 211
C、(+0.125)10 * 211
D、(+0.125)10 * 210
解析:选
IEEE754标准中,在阶码不为0时,隐藏一个小数点前面的1。
45100000H -> 0100 0101 0001 0000 0000 0000 0000 0000
4、若浮点数的尾数用补码表示,则下列()中的尾数是规格化形式
A、1.11000
B、0.01110
C、0.01010
D、1.00010
解析:选D
对于规格化浮点数:用补码表示时:小数点前后不一样,用原码表示时,小数点后一位始终为1。
5、下列关于舍入的说法,正确的是()
a.不仅仅只有浮点数需要舍入,定点数在运算时也可能要舍入
b.在浮点数舍入中,只有左规格化时可能要舍入
c.在浮点数舍入中,只有右规格化时可能要舍入
d.在浮点数舍入中,左、右规格化均可能要舍入
e.舍入不一定产生误差
A、a、c、e
B、a、b、e
C、e
D、a、d
解析:选C
舍入:为了方便计算,常常舍弃一些尾数,对整体结果影响相比运算难度来说,可以忽略。在计算机中,只对浮点数进行舍入操作,而不对定点数进行操作。包括:向偶数舍入、向零舍入、向上舍入以及向下舍入。
在浮点数舍入中,对阶操作和右规操作需要舍入,其他情况均不需要。
舍入并不一定产生误差,例如11.00向下舍入为11.0,并没有产生误差。
6、下列有关浮点数加减法运算的叙述中,正确的是()
a.对阶操作不会引起阶码上溢或下溢
b.右规和尾数舍入都可能引起阶码上溢
c.左规时可能引起阶码下溢
d.尾数溢出时结果不一定溢出
A、仅b、c
B、仅a、b、d
C、仅a、c、d
D、a、b、c、d
解析:选
对于a,对阶操作是将小阶变为大阶,且这两个阶数都是已经表示出来合法的,因此不存在阶码上溢或下溢。
对于b,右规是阶码增大,因此可能会产生上溢,尾数舍入的时候可能会将最后一位变为1,因此可能需要右规变成规格化数,此过程可能会产生阶码上溢。
对于c,左规是将阶码变小,就有可能变得过小导致阶码下溢。
对于d,两个数计算完了以后尾数溢出,但不一定最终的结果就会溢出,因为在计算完以后还要进行规格化,此过程目的就是保留更多的尾数,因此规格化完了以后,不一定就会溢出了。