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。