微机原理---机器数

1.原码

约定数码序列的最高位为符号位,符号位为0表示正数,1表示负数

真值x [x]原
+0.1001 0.1001
-0.1001

1.1001

+1001 1001
-1001 11001
  • 定点小数的原码       [x]原_{}=x      (0 <= x < 1);

                                    [x]原=1-x    (-1 < x <= 0)

    x表示真值,[x]原表示原码表示的机器数

    例如:_{}

    x = +0.1011, [x]原=0.1011

    x = -0.1011,  [x]原=1-(-0.1011)=1.1011

  • 定点整数的原码        [x]原=x     (0 <= x < 2^n)

                                     [x]原=2^n - x    ( - 2^n  <  x  <=  0)

    n表示原码序列的位数

    例如:_{}

    x = +1011, [x]原=01011

    x = -1011,  [x]原=2^4 -(-1011)= 10000+1011=11011

    原码的0有两种表示方法(以定点小数为例)

  • [+0]原 = 0.00...0   ,  [-0]原 = 1-(-0.00...0)=1.00...0
  • 补码

  • 思想:减去一个数等效于加上一个负数
  • 定点小数的补码        [x]补=x      (0 <= x < 1);

                                     [x]补=2+x    (-1 < x <= 0)

    例如:_{}

    x = +0.1011, [x]补=0.1011

    x = -0.1011,  [x]补=2+(-0.1011)=10.0000-0.1011=1.0101

    定点整数的补码       [x]补=x     (0 <= x < 2^n)

                                     [x]补=2^(n+1) + x    (-2^n < x <= 0)

    n表示补码序列的位数

    例如:_{}

    x = +1011, [x]补=01011

    x = -1011,  [x]补=2^5 +(-1011)= 10000-1011=10101

    原码与补码的互换

    x>0时,原码与补码相同

    x<0时,符号位不变,其他各位求反,末尾数再加1,即求反加1

    l例如:

    x = 0.1010   ,     [x]原 = 0.1010,[x]补 = 0.1010

    x = -0.1010   ,    [x]原 = 1.1010,[x]补 = 1.0110

    反码

    思想:符号位与原码一样,数值部分,对于正数来说与原码一样,负数则按位取反。

    定点小数:            [x]反 = x                    (0 <= x < 1)

                                  [x]反 = (2-2^(-n))+ x       (-1 < x <= 0)

    定点整数:            [x]反  =  x                  (0 <= x < 2^n)

                                  [x]反  =  (2^(n+1) - 1) + x   (-2^n < x <= 0 )

    ex:

                x = +0.1001,[x]原 = 0.1001,[x]反 = 0.1001

                x = -0.1001,[x]原 = 1.1001,[x]反 = 1.0110

    移码

               [x]移 = 2^n + x  ( -2^n <= x < 2^n)

    eg:

           x = +1011,  [x]移 =   2^4+1011  =  10000+1011=11011

           x = -1011,  [x]移  =  2^4  +  1011  =  10000-1011 = 00101

猜你喜欢

转载自blog.csdn.net/Ohio98/article/details/81704271