• 计算机进行小数运算时出错的原因


    问题

    1. 二进制数0.1,用十进制表示的话是多少?

      0.5

    2. 用小数点后有3位的二进制数,能表示十进制数0.625吗?

      能,0.101(2) = 0.625(10)

    3. 将小数分为符号、尾数、基数、指数4部分进行表现的形式称为什么?

      浮点数

    4. 二进制数的基数是多少?

      2

    5. 通过把0作为数值范围的中间值,从而在不使用符号位的情况下来表示负数的表示方法称为什么?

      EXCESS系统表现

    6. 10101100.01010011这个二进制数,用十六进制数表示的话是多少?

      AC.53

    用二进制数表示小数

    它的处理和整数是一样的,将各数位的数值和位权相乘的结果相加即可。

    小数点后面的部分的位权依次是2-1、2-2、2-3、2-4...

    计算机运算出错的现象:将0.1累加100次也得不到10

    计算机运算出错的原因:有些十进制的小数无法用二进制数正确表示,这和十进制无法表示1/3这种循环小数是一样的道理。

    浮点数

    浮点数是指用符号、尾数、基数和指数这四部分来表示的小数。因为计算机内部使用的是二进制数,所以基数自然是2.因此,实际的数据中往往不考虑基数,只用符号、尾数、指数这三部分即可表示浮点数。

    双精度浮点数用64位、单精度浮点数用32位来表示全体小数。

    • 符号:符号位是1时表示负,符号位是0时表示正或零。
    • 尾数:将小数点前面的值固定为1的正则表达式
    • 指数:用EXCESS系统表示(为了表示负数时不使用符号位,通过将指数部分表示范围的中间值设为0)

    如何避免计算机计算出错

    计算机计算出错的原因之一是,采用浮点数来处理小数(另外,也有位溢出导致的计算出错)。

    • 回避策略:即无视这些错误。根据程序目的的不同,有时候一些微小的偏差并不会造成什么问题。
    • 把小数转换成整数来计算。
    • BCD(Binary Coded Decimal):用4位二进制来表示0~9的1位十进制数字

    二进制与十六进制

    4位二进制数正好相当于1位十六进制数。

    用十六进制数来表示二进制小数时,小数点后的二进制数的4位也同样相当于十六进制数的1位。不够4位时用0填补二进制数的低位即可。

  • 相关阅读:
    008 同步
    007 优雅的关闭线程
    006 线程中的join方法
    005 线程ID和线程的优先级
    004 后台线程
    003 Thread的构造
    群发 图片和语音失败原因是 ,返回 content是 null,
    状态,
    Shape Of My Heart
    转码 的状态,嘿嘿,小bug,少了一个 !
  • 原文地址:https://www.cnblogs.com/fr-ruiyang/p/14544395.html
Copyright © 2020-2023  润新知