zoukankan      html  css  js  c++  java
  • 小数在计算机中为什么会有误差?说明机器数、码制、浮点数、以及数制转换的一些问题

    1.常用的数制

    十进制  0~9

    八进制 0~7

    二进制 0~1

    十六进制 0~F

    2.十进制 转 各个进制

       方法 : 除以基数取余反向

    3. 2进制  8进制  16进制 转十进制

    二进制

    ___________________________

      2^3     2^2    2^1     2^0

       1         0          0         1         X

      =8+ 1 = 9

    八进制

    ———————————--------------

    8^1    8^0

    1          7

    =1*8 + 7*1 = 15

    十六进制类似。 

    4.二进制转 十六进制  八进制

    二转八

    三位一组   结果并在一起

    二转十六

    四位一组   结果合并在一起

    5. 整数在内存中的存储,采用二进制

                       符号位

    原码   正数      0

              负数       1

    反码   正数      和原码相同

              负数      在原码基础上,符号位不变,各个位取反

    补码   正数     和源码相同

              负数      在反码基础上,符号位不变,末位 +1

    案例↓↓↓↓↓↓

    ————————————————————————————

                       原码                 反码              补码

    5         0000  0101        0000 0101       0000 0101

    -5        1000   0101       1111  1010      1111 1011

    6. 机器数 和 真值

    用“+”、“-”号加绝对值来表示数值的大小,用这种形式表示的数值在计算机中称为“真值”

    符号数码化后,二进制数的最高位“0”表示正号,“1”表示负号,用这种形式表示的数值在计算机中称为“机器数”

    机器数中小数点隐含不占位

    机器数       有符号            纯整数   点在最低位之后

                                            纯小数   点在符号位之后,最高位之前。  

                     无符号            纯整数    点在最低位之后

                                            纯小数    点在最高位之前

    7.小数的存储 

       计算机中小数以二进制(浮点数)形式存储。

       首先是一个十进制小数形式,转化成二进制的计算案例。

    ————————————————————————————————

    0.8125 转换成二进制

      其实这种情况是赶巧了得到一个确切的值。

    ————————————————————————————————

    但对于某些特殊情况是这样的

    8.浮点数产生误差的原因

      有两钟情况,会产生误差

       1)以二进制保存浮点数,所以一些原本有限位的小数,按照上面方法运算以后,可能变成一个无限循环的小数。

    ————————————————————————————————

       (十进制)0.9转成2进制是无限循环小数0.1110011001100110011...

    ————————————————————————————————

    2)计算机保存浮点数的精度有限,例如float可以保留十进制最多7位(二进制23位)有效数字,double 可以保留十进制15~16位(二进制52位)有效数字。那有效数字以后的就被忽略了。

  • 相关阅读:
    苹果一体机发射Wi-Fi
    iphone 屏蔽系统自动更新,消除设置上的小红点
    data parameter is nil 异常处理
    copy与mutableCopy的区别总结
    java axis2 webservice
    mysql 远程 ip访问
    mysql 存储过程小问题
    mysql游标错误
    is not writable or has an invalid setter method错误的解决
    Struts2中关于"There is no Action mapped for namespace / and action name"的总结
  • 原文地址:https://www.cnblogs.com/mcad/p/4187559.html
Copyright © 2011-2022 走看看