第一章 基础知识

 
  1.4 数和字符的表示

  1.4.1 计算机中数的表示
  
1.4.1.1 补码表示法

  计算机中的数和数的符号都是用二进制表示的,这样的数称为机器数。一般用最高有效位来表示数的符号,正数用0表示,负数用1表示。
  机器数可用不同的码制来表示,常用的有原码、补码和反码表示法。

  机器字长n是指参与运算的数的基本位数,标志着计算精度,一般是字节的整数倍,有8位、16位、32位等。

  原码表示法:符号 + 绝对值
             
    由此可以看出,0的表示不唯一。

  反码表示法:正数的反码同原码,负数的反码数值位与原码相反
              
    由此可以看出,0的表示不唯一。

  补码表示法:多数机器的整数都采用补码表示法。
  正数的补码表示:与原码表示相同
                

  负数的补码表示:相应的正数按位求反,末位加1即为该负数的补码表示
  
  求负数补码表示的方法:
  (1)写出与该负数相对应的正数的补码
  (2)按位求反
  (3)末位加一
  例:假设机器字长为8位,求-46的补码。
    + 46的补码表示为: 0010 1110
    按位求反:     1101 0001
    末位加一      1101 0010
    所以,[-46]补码 = D2H

  符号扩展:是指一个数从位数较少扩展到位数较多,如从8位扩展到16位,或从16位扩展到32位。

  对于用补码表示的数,正数的符号扩展在前面补0,负数的符号扩展在前面补1,假设机器字长为16位,[+46]补码 = 002EH,[-46]补码 = FFD2H。