各种数值数据在计算机中表示的形式称为机器数。机器数对应的实际数值称为数的真值。
定点数和浮点数区别
定点数
小数点的位置固定不变
浮点数
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表示不唯一