• 计算机组成原理——数据的表示的运算の选择题整理


    数制与编码

    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、低位数送来的进位

    解析:选D
    低位送来的进位也需要参与该位的全和计算,如果有进位,就送来1,就要多加一个1,如果是0,就加上0。
    在这里插入图片描述

    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;
    
    • 1
    • 2
    • 3
    • 4

    若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,两个数计算完了以后尾数溢出,但不一定最终的结果就会溢出,因为在计算完以后还要进行规格化,此过程目的就是保留更多的尾数,因此规格化完了以后,不一定就会溢出了。

  • 相关阅读:
    [AGC057D] Sum Avoidance
    【K8S系列】Kubernetes 之kubectl 常用命令汇总
    Java基础函数式编程
    分享10套开源免费的高品质源码,免费源码下载平台
    让两个电脑通信的方法(TCP连接,UDP连接,C/S架构)
    尚品汇电商项目总结
    限流器设计思路(浅入门)
    模态逻辑介绍
    海思3559万能平台搭建:添加一个新的sensor
    numpy公式
  • 原文地址:https://blog.csdn.net/qq_45741986/article/details/126085662