原码反码补码移码

源码的定义:

  [X]源 = 

  整数时:

   0 ,X      ( 2n   >  X  ≥  0 )  

   2n-X          (  0   ≥  X   > -2)

X为真值,n为整数的位数

例如:

x = +1110    [x] = 0,1110 

x = -1110    [x] = 24 - (-1110) = 1,1110

小数时:

X   ( 1 >  X  ≥  0 )

1-X   ( 0 ≥  X  >-1 )

X为真值

例如:

x = +0.1101   [x] = 0.1101

x = -0.1101    [x] = 1 - (-0.1101) = 1.1101

小测试:

1.已知[x] = 1.0011 求x

解:x = 1 - [x] = 1 - 1.0011 = -0.0011

2.已知[x] = 1,1100 求x

解: x = 24 - [x] = 10000 - 1,1100 = -1100

3.已知[x] = 0.1101 求x

解:x = +0.1101

4.求 x=0 的原码

解: 设 x = +0.0000   [+0.0000] = 0.0000

        设 x =  -0.0000   [-0.0000] = 1.0000

故:[-0] ≠ [+0]

对于整数:[+0] = 0,0000

                  [-0]  = 1,0000

总结:

优点:表示方法简单,直观

缺点:不适合运用于加减运算,需要判断正负、确定前后位置、判断结果符号····

规定:用小数点 "." 将符号位和数值位隔开的机器数一律为小数;

用逗号 "," 将符号位和数值位隔开的机器数一律位整数;  (参照上面例子)

补码:

补数表示法:

一个负数可以用其正的补数来代替,这个正的补数可以用此负数加模来求得。

一个正数和负数互为补数时,他们的绝对值之和就是模。

正数的补数就是它本身。

性质:补码的和等于和的补码

6 - 3 = [ [6-3] ] = [ [6] + [-3] ] = [0,110 + 1,101]

        = [10,011]

        = [ 0,011 ]

        = 3

补码的定义:

 [X]补 = 

  整数时:

  0,X    ( 2n >  X  ≥ 0 )

  2n+1 + X    ( 0 >  X  ≥ -2n

                                 (mod 2n+1)

X为真值,n为整数位数(不包括符号位)

例如:

x = +1010  求x的补码。

解:[x] = 0,1010

x = -1011000  求x的补码。

解:[x] = 27+1 = (-1011000)

               = 100000000

                   -  1011000

                   1,0101000

小数时:

  X    ( 1 >  X  ≥ 0 )   (X为真值)

  2+X    (0 >  X  ≥ -1 )   (mod 2)

例如:

x = +0.1110   [x] = 0.1110

x = -0.1100000   [x] = 2 + (-0.1100000)

   =10.0000000

     - 0.1100000

       1.0100000

总结补码计算方法:

1.补码 = 反码 + 1

2.负数补码求法:符号位不变,数值位从左到右依次取反,最右边的1及其后的0不变

例如: x = -0.1100100   --->  x = 1.0011100     

3.补码的补码是原码

 移码:

补码表示很难判断其真值的大小

十进制 二进制 补码
x = +21 +10101 0,10101
x = -21 -10101 1,01011
x = +31 +11111 0,00001
x = -31 -11111 1,00001

x + 25

x = +21 +10101 + 100000   =110101
x = -21 -10101 + 100000 =001011
x = +31 +11111 +100000 =111111
x = -31 -11111 + 100000 =000001

1的个数越多就大

移码的定义:

  [X]移 = 2n + X    (2n >  X  ≥ -2n)

X为真值,n为整数的位数。

移码和补码数值位相同,符号位相反

小测试:

x = 10100    [x] = 25 + 10100 = 1,10100

x = -10100    [x] = 25 - 10100 = 0,01100

特点:

1.[+0] = [-0]

2.当x=5事,最小真值(-2 = -100000) 的移码全0 = 25 - 100000 = 000000

 

猜你喜欢

转载自www.cnblogs.com/clz1651/p/12531041.html