数值编码

各种数值数据在计算机中表示的形式称为机器数。机器数对应的实际数值称为数的真值。

定点数和浮点数区别

定点数

小数点的位置固定不变

浮点数

F = M * 2E

M:尾数

E:阶码

浮点数表示一般包括:数符,阶符,阶码数值部分,尾数数值部分

原码

定义

(1)整数

[left[ X ight]{ m{ =  }}left{ {egin{array}{*{20}{c}}
{X{ m{     }}({ m{0}} le X{ m{  < }}{{ m{2}}^{n - 1}}{ m{)  }}}\
{{2^{n - 1}} - X{ m{     }}({ m{ - }}{{ m{2}}^{n - 1}}{ m{  <  }}X le 0){ m{  }}}
end{array}} ight.]

其实就是最高位表示符合,其它位表示绝对值

(2)浮点数

[left[ X ight]{ m{ = }}left{ {egin{array}{*{20}{c}}
{X({ m{0}} le X < { m{1}})}\
{1 - X( - { m{1}} < X le 0)}
end{array}} ight.]

优点

简单直观

缺点

(1)加减运算麻烦

(2)0表示不唯一

补码

定义

(1)整数

[left[ X ight]{ m{ =  }}left{ {egin{array}{*{20}{c}}
{X{ m{     }}({ m{0}} le X{ m{  <  }}{{ m{2}}^{n - 1}}{ m{)  }}}\
{{2^n} + X{ m{     }}( - {2^{n - 1}}{ m{ }} le X < 0){ m{  }}}
end{array}(mod {2^n})} ight.]

补码的负数是该值的正数表示按位取反加1 

(2)浮点数

[left[ X ight]{ m{ =  }}left{ {egin{array}{*{20}{c}}
{X{ m{     }}({ m{0}} le X{ m{  <  1)  }}}\
{2 + X{ m{     }}( - 1{ m{ }} le X < 0){ m{  }}}
end{array}(mod 2)} ight.]

优点

(1)0的表示唯一

(2)大多数 处理器都设置了求补运算

(3)加减法简单:[X+Y] = [X] + [Y]

计算机中一般采用补码表示

反码

定义

(1)整数

[left[ X ight]{ m{ =  }}left{ {egin{array}{*{20}{c}}
{X{ m{     }}({ m{0}} le X{ m{  <  }}{{ m{2}}^{n - 1}}{ m{)  }}}\
{({2^n} - 1) + X{ m{     }}( - {2^{n - 1}}{ m{  <  }}X le 0){ m{  }}}
end{array}(mod ({2^n} - 1))} ight.]

负数补码是正数的按位取反

(2)小数

[left[ X ight]{ m{ =  }}left{ {egin{array}{*{20}{c}}
{X{ m{     }}({ m{0}} le X{ m{  <  }}1{ m{)  }}}\
{(2 - {2^{ - n + 1}}) + X{ m{     }}( - 1{ m{  <  }}X le 0){ m{  }}}
end{array}(mod (2 - {2^{ - n + 1}}))} ight.]

特点

0表示不唯一

原文地址:https://www.cnblogs.com/xumaomao/p/11871267.html