原码 补码 反码 移码

来源:互联网 发布:海洋cms手机模板 编辑:程序博客网 时间:2024/06/05 20:41
1)原码表示法

    原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用1表示负号,数值一般用二进制形式表示。设有一数为x,则原码表示可记作[x

    例如,X1=1010110

          X2= 1001010

    其原码记作:

            X1=[1010110]=01010110

            X2=[1001010]=11001010

    原码表示数的范围与二进制位数有关。当用8位二进制来表示小数原码时,其表示范围:

      最大值为0.1111111,其真值约为(0.9910

      最小值为1.1111111,其真值约为(一0.9910

当用8位二进制来表示整数原码时,其表示范围:

      最大值为01111111,其真值为(12710

      最小值为11111111,其真值为(-12710

      在原码表示法中,对0有两种表示形式:

          +0=00000000

           [0]=10000000

 

2)补码表示法  --简化减法运算电路的设计

1)模的概念:把一个计量单位称之为模或模数。例如,时钟是以12进制进行计数循环的,即以12为模。在时钟上,时针加上(正拨)12的整数位或减去(反拨)12的整数位,时针的位置不变。14点钟在舍去模12后,成为(下午)2点钟(14=14-12=2)。从0点出发逆时针拨10格即减去10小时,也可看成从0点出发顺时针拨2格(加上2小时),即2点(0-10=-10=-10+12=2)。因此,在模12的前提下,-10可映射为+2。由此可见,对于一个模数为12的循环系统来说,加2和减10的效果是一样的;因此,在以12为模的系统中,凡是减10的运算都可以用加2来代替,这就把减法问题转化成加法问题了(注:计算机的硬件结构中只有加法器,所以大部分的运算都必须最终转换为加法)。10和2对模12而言互为补数。
同理,计算机的运算部件与寄存器都有一定字长的限制(假设字长为8),因此它的运算也是一种模运算。当计数器计满8位也就是256个数后会产生溢出,又从头开始计数。产生溢出的量就是计数器的模,显然,8位二进制数,它的模数为28=256。在计算中,两个互补的数称为“补码”。


    机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。设有一数X,则X的补码表示记作[X

      例如,[X1]=1010110

            [X2]= 1001010

            [X1]=01010110

            [X1]=01010110

          [X1]=[X1]=01010110

            [X2]= 11001010

            [X2]=10110101110110110

    补码表示数的范围与二进制位数有关。当采用8位二进制表示时,小数补码的表示范围:

      最大为0.1111111,其真值为(0.9910

      最小为1.0000000,其真值为(一110

采用8位二进制表示时,整数补码的表示范围:

      最大为01111111,其真值为(12710

      最小为10000000,其真值为(一12810

      在补码表示法中,0只有一种表示形式:

        [0]=00000000

        [-0]=111111111=00000000(由于受设备字长的限制,最后的进位丢失)

所以有[0]=[0]=00000000

 

 

3)反码表示法

    机器数的反码可由原码得到。如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。设有一数X,则X的反码表示记作[X

    例如:X1=1010110

          X2= 1001010

        X1=01010110

         [X1]=X1=01010110

         [X2]=11001010

         [X2]=10110101

    反码通常作为求补过程的中间形式,即在一个负数的反码的未位上加1,就得到了该负数的补码。

1.已知[X]=10011010,求[X]

分析如下:

[X][X]的原则是:若机器数为正数,则[X]=[X];若机器数为负数,则该机器数的补码可对它的原码(符号位除外)所有位求反,再在未位加1而得到。现给定的机器数为负数,故有[X]=[X]1,即

          [X]=10011010

          [X]=11100101

     十)        1     

 

          [X]=11100110

 

 

2.已知[X]=11100110,求[X

         分析如下:

     对于机器数为正数,则[X=X

     对于机器数为负数,则有[X=[[X

现给定的为负数,故有:

            X=11100110

        [[X=10011001

              十)         1   

 

        [[X=10011010=X


  [+0]反=00000000,
     [-0]反=11111111

(4).移码

设机器字长n+1位,则移码的定义如下:
[x]移=2^n+x                 -2^n <= x <= 2^n-1

表示浮点数时还常用一种称为移码的码制。浮点数的阶码表示指数大小,有正有负,为避开阶码的符号,对每个阶码都加上一个正的常数(称偏移常数),使能表示的所有阶码都为正整数,变成“偏移”了的阶码,又称“增码”。移码的值不小于0,这样阶码总为0,可以取消,浮点数小数点的实际位置由移码减去偏移常数来决定。
一个实数可表示成一个纯小数与一个乘幂之积。如1011.101=0.1011101×2100;–0.0010011=–0.10011×2-10;–110001101=–0.110001101×21001。
一个任意实数,在计算机内部可以用指数(为整数)和尾数(为纯小数)来表示,用指数和尾数表示实数的方法称为浮点表示法。
浮点数的长度可以是32位、64位甚至更长,分阶码和尾数两部分。阶码位数越多,可表示的数的范围越大;尾数越多,所表示的数的精度越高。“移码”用来表示浮点型小数的阶码。对于正数,符号位为“1”,其余位不变,如+1110001的阶码为11110001;对于负数,符号位为“0”,其余位取反,最后加“1”,如–1110001的阶码为00001111。
移码与补码的关系是符号位互为反码,例如:X=+1011时,[X]移=11011,[X]补=01011 ;X=–1011时,[X]移=00101,[X]补=10101。
注意:对移码运算的结果需要加以修正,修正量为2n,即对结果的符号位取反后才是移码形式的正确结果。移码表示中,0有唯一的编码——1000…00,当出现000…00时(表示–2n),属于浮点数下溢。


实际运用的是补码和移码,而其他码都是转换补码移码的中间换算过程。

127~128 补码移码的二进制编码:

真值(十进制)       真值(二进制)          补码                      移码
-128                     -1000 0000               1000 0000           0000 0000
-127                    - 1111 1111                1000 0001           0000 0001
   .                                   .                                 .                               .
   .                                   .                                 .                               .
   .                                   .                                 .                               .
-1                         -0000 0001                1111 1111             0111 1111
 0                          0000 0000                 0000 0000            1000 0000
 1                          0000 0001                 0000 0001            1000 0000
   .                                   .                                 .                               .
   .                                   .                                 .                               .
   .                                   .                                 .                               .
 127                      0111 1111                  0111 1111            1111 1111




原创粉丝点击