真值(即:带有正负号的数值是真值,用0或1来表示正负号的数值是机器数,例如:-10011为真值,110011为机器数)

以下X表示数据的真值。

1. 原码表示法

最简单且直观的机器数表示法,其最高位为符号位(0为正,1为负),数值部分与真值的数值相同

设X为纯小数,一位符号位,n个数值位,则

[X] { X                  0=<X<=1-2n-1

1-X=1+|X|             -(1-2n-1)=<X<=0

 例如:x=-0.1001,那么先把它转化成机器数为:1.1001

 根据公式:[X]=1-X=1-(-0.1001)=1+0.1001=1.1001=1+|-0.1001|

     [+0.8125]=(0.1101000)2
    [-0.8125]=1-(-0.8125)=(1.0000000)2+(0.1101000)2=(1.1101000)2

设X为纯整数,一位符号位,n个数值位,则

[X]

{ X                         0=<X<=2n-1

2nX=2n+|X|           -(2n-1)=<X<=0

   例如:机器字长n=8
   [+35]=(00100011)2
   [-35]=27-(-35)=(10000000)2+(00100011)2=(10100011)
2

2.补码表示法

    变形补码:即用两个二进制位来表示数字的符号位,其余与补码相同。变形补码,用”00″表示正,用”11″表示负,也称为模4的补码。

    用变形补码进行加减运算时,当运算结果的符号位出现”01″或者”10″时,则表示产生溢出。变形补码的最高位(第一个符号位)总是表示正确的符号,

    比如”00″、 “01”分别表示     正数、正溢出(上溢),”11″、”10″表示负数、负溢出(下溢)。

1、产生01的情况:   补码:    0 111+ 0 010—-1 001

    两个正数相加出现了负数,明显有误,就是说此时产生了上溢出(注:补码运算时符号位也参与运算)

                     变形补码:    00 111+ 00 010—-01 001

     此时读数时,由于左边的符号位是0,所以表示正数,读成+9,而不像模二补码中变成了-7

2、产生10的情况:   补码:   1 001+ 1 010—- 10 011

    溢出一位后,结果变成了0 011,两个负数相加出现了正数,明显有误,就是说此时产生了下溢出(注:补码运算时符号位也参与运算)

                     变形补码:    11 001+ 11 010—-110 011

    溢出一位后,结果变成了10 011,此时读数时,由于左边的符号位是1,所以表示负数,读成-19,而不像模二补码中变成了+3

    (注:产生01和10时,读数时右边那一位符号也要算在数字里面)