免费智能真题库 > 历年试卷 > 程序员 > 2018年下半年 程序员 上午试卷 综合知识
  第19题      
  知识点:   机器数的运算   机器数和码制   算术运算
  关键词:   带符号   数据   算术运算        章/节:   数据的表示   算术运算和逻辑运算       

 
采用( )表示带符号数据时,算术运算过程中符号位与数值位采用同样的运算规则进行处理。
 
 
  A.  补码
 
  B.  原码
 
  C.  反码
 
  D.  海明码
 
 
 

 
  第19题    2017年下半年  
   27%
将二进制序列1011011表示为十六进制,为( )。
  第22题    2017年上半年  
   37%
设机器字长为8,对于二进制编码10101100,如果它是某整数x的补码表示,则x的真值为(21),若它是某无符号整数y的机器码,则y的真..
  第21题    2010年下半年  
   34%
若用8位机器码表示二进制数-111,则原码表示的十六进制形式为(20);补码表示的十六进制形式为(21)。
 
  第21题    2014年下半年  
   44%
在定点二进制运算中,减法运算一般通过(21)来实现。
  第20题    2015年上半年  
   44%
机器字长确定后,(20)运算过程中不可能发生溢出。
  第20题    2009年上半年  
   68%
设两个8位补码表不的数b7b6b5b4b3b2b1b0和a7a6a5a4a3a2a1a0相加时溢出(b7、a7为符号标志),则(20)。
   知识点讲解    
   · 机器数的运算    · 机器数和码制    · 算术运算
 
       机器数的运算
               机器数的加减运算
               在计算机中,通常只设置加法器,减法运算要转换为加法运算来实现。机器数的加、减法运算一般用补码来实现,其运算方法如下:
               X±Y→[X+[±Y
               例如(采用8位定点整数):
               
               运算结果中的后8位的真值为+3,是正确的。
               当运算的结果超过了字长的表示范围时,则产生溢出。双符号位方法是常用的溢出判别方法。在CPU中的加法器前设1位寄存器S0,运算时接收来自最高位(符号位S)的进位。运算前S0S被设为一操作数的符号,运算后对其进行判别,则有以下逻辑关系:当运算后S0S=1,则溢出;当运算后S0S=0,无溢出。
               例如,8位定点整数的最大正数是127→(01111111)。若再加1则为10000000,按机器的表示格式,这个值被认为是-128,显然是不正确的,也就是说产生了溢出问题。下面用上述的双符号位方法完成此题的计算和判别。
               
               运算过程:
               
               因为S0S=0⊕1=1,表示运算结果溢出。
               机器数的乘除运算
               在计算机中实现乘除运算,主要有以下3种方法。
               (1)纯软件方案,乘除运算通过程序来完成。该方法速度很慢。
               (2)通过增加少量用来实现左右移位的逻辑电路来实现。
               (3)通过专用的硬件阵列乘法器(或除法器)来实现。
               浮点运算
               1)浮点加减运算
               完成浮点数加减法有5个基本步骤:对阶、尾数加减、规格化、舍入和检查溢出。
               例:两浮点数x=201×0.1101,y=211×(-0.1010)。假设尾数在计算机中以补码表示,可存储4位尾数,2位符号位,阶码以原码表示,求x+y
               解:xy转换成浮点数据格式
               [x=00 01, 00.1101
               [y=00 11, 11.0110
               具体的步骤如下。
               ①对阶,阶差为11-01=10,即2,因此将x的尾数右移两位,得:
               [x=00 11, 00.001101
               ②对尾数求和,得:
               [x+y=00 11, 11.100101
               ③由于符号位和第一位数相等,不是规格化数,向左规格化,得:
               [x+y=00 10, 11.001010
               ④舍入,得:
               [x+y=00 10, 11.0010
               ⑤数据无溢出,因此结果为:
               x+y=210×(-0.1110)
               2)浮点乘除运算
               浮点数相乘,其积的阶码等于两乘数的阶码之和,尾数等于两乘数的尾数之积,数符由两乘数的数符按逻辑异或求出。
               浮点数相除,其商的阶码等于被除数的阶码减去除数的阶码,尾数等于被除数的尾数除以除数的尾数,数符由两除数的数符按逻辑异或求出。
 
       机器数和码制
        各种数据在计算机中的表示形式称为机器数,其特点是采用二进制计数制,数的符号用0、1来表示,小数点则隐含表示而不占位置。真值是机器数所代表的实际数值。
        机器数分无符号数和带符号数两种。无符号数表示正数,没有符号位。对于无符号数,若约定小数点的位置在机器数的最低位之后,则是纯整数;若约定小数点位置在最高位之前,则是纯小数。对于带符号数,最高位是符号位,其余位表示数值,若约定小数点的位置在机器数的最低位之后,则是纯整数;若约定小数点的位置在最高数值位之前(符号位之后),则是纯小数。
        为方便运算,带符号的机器数可采用原码、反码和补码等不同的编码方法,这些编码方法称为码制。真值的符号数字化:我们用"+"和"-"来表示正负数,而计算机则将二进制数的最高位设置成符号位,通常用"0"表示正数,"1"表示负数。
        1)原码
        规则:最高位为符号位,"0"表示正数,"1"表示负数。对数0则有"+0"和"-0"两种表示。
        
        对n+1位字长用以表示整型数值的范围:-2n+l≤X≤2n-l。
        2)反码
        规则:最高位为符号位,"0"表示正数,"1"表示负数。正数与原码相同,负数则要将除符号位的其他位按位取反。对数0则有"+0"和"-0"两种表示。
        
        对n+1位字长用以表示整型数值的范围:-2n+l≤X≤2n-l。
        3)补码
        规则:最高位为符号位,"0"表示正数,"1"表示负数。正数与原码相同,负数则要将除符号位的其他位按位取反后加1。对数0只有"0"一种表示。
        
        对n+1位字长用以表示整型数值的范围:-2nX≤2n-1。
        补码运算的优点:将减法运算变成加法运算(因为运算器中只有加法器)。
        例如:96-20=76
        最高位的进位则自然丢失
        4)移码
        规则:最高位为符号位,"1"表示正数,"0"表示负数。
        当-2nX<2n时,[X=2n+x
        数值范围:-2nX≤2n-1。
        特点:保持了数据原有的大小顺序,便于进行比较操作。
        以上介绍的4种编码方法(设字长为4位,最高位为符号位)的对应关系如下表所示。
        
        符号数的四种编码表示
 
       算术运算
               二进制算术运算规则
               (1)加法:二进制加法的进位规则是“逢二进一”。
               0+0=01+0=10+1=11+1=0(有进位)
               (2)减法:二进制减法的借位规则是“借一当二”。
               0-0=01-0=11-1=00-1=1(有借位)
               (3)乘法:
               0×0=01×0=00×1=01×1=1
               机器数的加减运算
               在计算机中,可以只设置加法器,而将减法运算转换为加法运算来实现。
               (1)补码加法的运算法则是:和的补码等于补码求和,即[X+Y]=[X]+[Y]
               (2)补码减法的方法是:差的补码等于被减数的补码加上减数取负后的补码。因此,在补码表示中,可将减法运算转换为加法运算,即[X-Y]补=[X]+[-Y]
               (3)由[X]求[-X]的方法是:[X]的各位取反(包括符号位),末尾加1。
               溢出及判定
               在确定了运算的字长和数据的表示方法后,数据的范围也就确定了。一旦运算结果超出所能表示的数据范围,就会发生溢出。发生溢出时,运算结果肯定是错误的。
               只有当两个同符号的数相加(或者是相异符号数相减)时,运算结果才有可能溢出。
               机器数的乘除运算
               在计算机中实现乘除法运算,通常有如下三种方式。
               (1)纯软件方案,在只有加法器的低档计算机中,没有乘、除法指令,乘除运算是用程序来完成的。这种方案的硬件结构简单,但进行乘除运算时速度很慢。
               (2)在现有的能够完成加减运算的算术逻辑单元ALU的基础上,通过增加少量的实现左、右移位的逻辑电路,来实现乘除运算。与纯软件方案相比,这种方案增加硬件不多,而乘除运算的速度有了较大提高。
               (3)设置专用的硬件阵列乘法器(或除法器),完成乘(除)法运算。该方案需付出较高的硬件代价,可获得最快的执行速度。
               浮点运算
                      浮点加减运算
                      设有浮点数X=M×2iY=N×2j,求X±Y的运算过程如下。
                      (1)对阶。使两个数的阶码相同。令K=|i-j|,把阶码小的数的尾数右移K位,使其阶码加上K
                      (2)求尾数和(差)。
                      (3)结果规格化并判溢出。若运算结果所得的尾数不是规格化的数,则需要进行规格化处理。当尾数溢出时,需要调整阶码。
                      (4)舍入。在对结果进行右移时,尾数的最低位将因移出而丢掉。另外,在对阶过程中也会将尾数右移使最低位丢掉。这就需要进行舍入处理,以求得最小的运算误差。舍入处理的方法如下。
                      ①截断法。将要保留的数据末位右边的数据全都截去,不管数据是0还是1。
                      ②末位恒1法。将要保留的末位数据恒置1,不管右移丢掉的数据是0还是1。
                      ③0舍1入法。舍去的数据为0时,保持末位原始状态。若舍去的数据为1,则将末位加1。这类似于十进制中的四舍五入。但当数据为0.1111…1,即在尾数全为1的特殊情况下,这种舍入会再次产生溢出。遇到这种情况可用硬件判断,并在舍去1时末位不再加1。
                      (5)溢出判别。以阶码为准。若阶码溢出(超过最大值),则运算结果溢出;若阶码下溢(小于最小值),则结果为0,否则结果正确无溢出。
                      浮点乘除运算
                      浮点数相乘,其积的阶码等于两乘数的阶码相加,积的尾数等于两乘数的尾数相乘。浮点数相除,其商的阶码等于被除数的阶码减去除数的阶码,商的尾数等于被除数的尾数除以除数的尾数。乘除运算的结果都需要进行规格化处理并判断阶码是否溢出。
   题号导航      2018年下半年 程序员 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第19题    在手机中做本题