您好,欢迎来电子发烧友网! ,新用户?[免费注册]

当前位置:电子发烧友网 > 图书频道 > 电子 > 《计算机组成原理与汇编语言》 > 第1章 预备知识

第5节 符号数的表示与运算

1.5.1 符号数的表示方法

      表示一个带符号的二进制数有3种方法。

 1.原码法
         
      例如:

          8位二进制符号数(+45)10和(-45)10,可以如下写出:

          (+45)10=(0  0101101)2
                  ↑  ↑
                 符号 位数值    
          (-45)10=(1 0101101)2 
                 ↑  ↑ 
                符号位 数值
         
 2.反码法
         
       在计算机的早期,曾采用反码法来表示带符号的数。对于正数,

  其反码与其原码相同。
         
       例如:
            (+45)10=(00101101)2
         
       也就是说正数用符号位与数值凑到一起来表示。对于负数,用相

  应正数的原码各位取反来表示,包括将符号位取反,取反的含义就是将

  0变为1,将1变为0。例如,(-45)10的反码表示就是将上面

  (+45)10的二进制数各位取反:

  (-45)10=(11010010)2同样,可以写出如下几个数的反码表示,以便

  读者对照:
         
              (+4)10=(00000100)2

              (-4)10=(11111011)2 

              (+7)10=(00000111)2 

              (-7)10=(11111000)2 

              (+122)10=(01111010)2 

              (-122)10=(10000101)2 
 3. 补码法
         
       在微处理机中,符号数是用补码(对2的补码)来表示的。用补码法表示带符号数的法则是:正数的表示方法与原码法和反码法一样;负数的表示方法为

     该负数的反码表示加1。

     例如,(+4)10的补码表示为(00000100)2,而(-4)10用补码表示时,可先求其反码表示(11111011)2,而后再在其最低位加1, 变为(11111100)2 。这就

            是(-4)10的补码表示,即(-4)10=(11111100)2。同样,我们把前面提到的几个数的补码表示列在下面供读者参考:

               (+7)10=(00000111)2 

              (-7)10=(11111001)2 

              (+122)10=(01111010)2 

              (-122)10=(10000110)2 
1.5.2  补码的运算

         
     例如:
            
          有两个二进制数10000100和00001110,当规定它们是不带符号的数时,则它们分别表示(132)10和(14)10,将这两个二进制数相加:
         
             10000100

            + 00001110
           _____________
             10010010 
         
         在微处理器中,一般都不设置专门的减法电路。遇到两个数相减时,处理器就自动地将减数取补,而后将被减数和减数的补码相加来完成减法运算。

         例如,(69)10(26)10=?

         可以写成(69)10+(26)10。利用(69)10的原码和(26)10 的补码相加,即可以得到正确的结果读者可以自己进行验证。
         
         例如:

          两个带符号数(01000001)2(十进制数+65)与(01000011)2(十进制数+67)相加:
         
               01000001
              + 01000011
              ____________ 
               10000100 
         
         再来看两个负数(10001000)2和(11101110)2的相加情况。
         
               10001000
              + 11101110
              ____________ 
              101110110 
         
         此外,在微处理机中还会遇到不带符号数的运算。
         例如:
            两个无符号数(11111101)2和(00000011)2相加:
         
            11111101
           + 00000011
           ____________ 
           100000000 
1.5.3数的定点表示和浮点表示

         
 1. 数的定点表示法
         
     当小数点固定在最高有效位的前面时,定点数为纯小数,其格式如图所示: 

    ↑    数码   小数点

 2. 数的浮点表示法
         
       在十进制中,一个数可以写成多种表示形式。
         

       例如:
          83.125可写成10^2×0.83125,10^3×0.083125,10^4×0.0083125。同样,一个二进制数,也可以写成多种表示形式。
         
       例如:
          二进制数1011.10101可以写成2^4×0.101110101,2^5×0.0101110101,2^6×0.00101110101等等。
         
       可以看出,一个二进制数能够用一种普遍的形式来表示:
         
                                 2^E×F 
         
      其中E称为阶码,F叫做尾数。我们把用阶码和尾数表示的数叫做浮点数,这种表示数的方法称为浮点表示法在浮点表示法中,阶码通常为带符号的整数,

       尾数为带符号的纯小数。浮点数的表示格式如下:

          

                                                                                       ↑     

                                                                                    小数点

     很明显,浮点数的表示不是唯一的。当小数点的位置改变时,阶码也随 着相应改变,可以用多种形式来表示同一数。 可见,若浮点数的表示格式为:    

                            

                                                1位               R位      1位                 P位

        则可以看到,用这种编码所能表示的数的数值范围为: 

       前面的二进制数1011.10101可以用包括符号在内的8位阶码,16位尾数的 规格化形式表示如下: