免费智能真题库 > 历年试卷 > 程序员 > 2009年上半年 程序员 上午试卷 综合知识
  第20题      
  知识点:   机器数的运算   补码
  关键词:   补码        章/节:   算术运算和逻辑运算       

 
设两个8位补码表不的数b7b6b5b4b3b2b1b0和a7a6a5a4a3a2a1a0相加时溢出(b7、a7为符号标志),则(20)。
 
 
  A.  b7与a7的“逻辑或”结果一定为1
 
  B.  b7与a7的“逻辑或”结果一定为0
 
  C.  b7与a7的“逻辑异或”结果一定为1
 
  D.  b7与a7的“逻辑异或”结果一定为0
 
 
 

 
  第21题    2020年下半年  
   49%
设有两个浮点数,其阶码分别为E1和E2,当这两个浮点数相乘时,运算结果的阶码E为(21)。
  第21题    2014年下半年  
   44%
在定点二进制运算中,减法运算一般通过(21)来实现。
  第20题    2015年上半年  
   44%
机器字长确定后,(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表示负数。正数的补码和原码、反码相同,就是二进制数值本身。负数的补码是这样得到的:将数值部分按位取反,再在最低位加1。补码的补码就是原码。
        因为正数的补码和原码相同,所以采用补码能正确进行加法运算。又因为负数的补码等于反码加1,所以负数的补码具有反码的特性,可以正确进行减法运算,因此补码是最适合进行数字加减运算的。
        由于补码能使符号位与有效值部分一起参加运算,从而简化运算规则,同时它也使减法运算转换为加法运算,进一步简化计算机中运算器的电路,这使得在大部分计算机系统中,数据都使用补码表示。
   题号导航      2009年上半年 程序员 上午试卷 综合知识   本试卷我的完整做题情况  
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 /
 
第20题    在手机中做本题