首页 > 编程语言 >对于计算机运算小数出错的认识(《程序是怎样跑起来的》第3章)

对于计算机运算小数出错的认识(《程序是怎样跑起来的》第3章)

时间:2024-02-18 13:33:54浏览次数:27  
标签:表示 计算机 二进制 浮点数 出错 小数 运算

通过阅读《程序是怎样跑起来的》第三章,我对于计算机处理数据有了进一步的了解。在第二章中我对于计算机使用二进制处理数据仅仅停留在处理整数部分,而在第三章,我认识到了计算机对于小数部分的处理。
在书中说计算机处理小数部分往往会出错,阅读后我知道了其缘由,我认为及其根本是因为计算机使用二进制处理数据,而二进制又无法表示全部的小数,因为,在固定位数的小数中,二进制0与1的“组合情况”无法表示全部小数,而且二进制的运算法则是从左至右位权增加,所对应的十进制数也就越大。比如00000001就表示1而00000010就表示2,在小数这一方面也是通用的,因此小数部分是无法用二进制表示完全的,所以计算机对于小数的运算也并非完全精确的。相反,十进制数转化为二进制数会出现无限循环这一情况,因此计算机会截取片段以达到近似值。但是又存在一个问题就是例如1011.10101这种表现形式,计算机无法识别这是哪一个十进制数,因此就引出了浮点数这一概念。在我所学的JAVA中浮点数分为单精度和双精度,在阅读完本章后我对此有了初步的理解,浮点数作为专门表示小数的数据类型,在计算机中采用符号+尾数×基数的指数次幂的形式,其中尾数部分是将整数部分变为1(通过逻辑右移来实现)后的二进制数并且会根据单/双精度的位数来补0,,指数部分是EXCESS系统,EXCESS系统就是将对应位数的最大值的中间值作为0,1表示+1,-1表示-1.如此如此来将指数用二进制表示出来,并暗中进行计算。如8位二进制数的最大值位11111111(十进制255),那么01111111(127)所对应的就是0,128就是1即转化为10进制就是1次幂(128-127)。因此可以用符号+尾数×基数的指数次幂来表示浮点数了,如此计算机就用浮点数来表示小数来运算了。同时我们可以用其他思路来计算小数,如先变为整数来运算,最后在除扩大的倍数即可,如此可以避免计算出错。

标签:表示,计算机,二进制,浮点数,出错,小数,运算
From: https://www.cnblogs.com/xhsbk/p/18019131

相关文章

  • 进行小数运算时出错的原因
    采用浮点数来处理小数,会存在计算出错的可能性,无论是使用单精度浮点数还是双精度浮点数1。2.有些十进制的小数无法正确地转换成二进制,因此无法在计算机中准确表示3.计算机只能用有限的状态去和无限的需要表现的数去一一对应,这可能会导致误差的出现所以尽管计算机在计算小数时可......
  • C语言运算符顺序及优先级
    逗号运算符是优先级最低的。通常单目运算符优先级大于双目。三目最小。但需注意,双目运算符中的赋值运算符优先级是最低的。在C语言中,大部分运算符都是从左向右进行计算的,但是也存在一些自右向左的运算符。其中最常见的自右向左的运算符是赋值运算符 = 和逗号运算符 ,。赋......
  • 《程序是怎样跑起来的》读后感——第三章 计算机进行运算小数时出错的原因
    一、二进制的限制计算机内部所有的信息都是以二进制的形式存储和处理的。然而,并非所有的十进制小数都能被精确地用二进制表示。例如,0.1在十进制中是一个无限循环小数,但在二进制中却无法精确表示,只能进行近似表示。这种差异导致了计算机在运算小数时可能出现误差。二、浮点数表示......
  • 《程序是怎样跑起来的》计算机在计算小数时会出错的原因
    一,原因无法准确表示的值,就只能用近似值来表示计算机能力有限,无法处理无限小数,只能根据变量所对应的数据类型的数,采取四舍五入处理法进行处理。由于二进制为近似数,转化为十进制后与所求值存在误差,它是一种正常的现象。二,浮点数分类:双精度浮点类型有64位单精度浮点类型有32位......
  • JavaSE第五步 —— 运算符
    一、运算符运算符的分类不尽相同,以下都是参考的相关书籍名称符号算数运算符一元运算符++、--算术运算符二元运算符+、-、*、/、%赋值运算符=扩展运算符+=、-=、*=、/=关系运算符>、<、=、>=、<=、==、!=、instanceof逻辑运算符&&、位......
  • 如何在 JavaScript 中使用大于和小于运算符
    在你的JavaScript程序中,你经常需要比较两个值,以确定一个是否大于另一个或小于另一个。这就是大于和小于运算符派上用场的地方。在本文中,我们将通过代码示例更详细地介绍如何使用这些运算符。(本文内容参考:java567.com)如何在JavaScript中使用大于运算符>你可以使用大于运算......
  • 运算符总结
    publicclass基本运算符{publicstaticvoidmain(String[]args){//算术运算符//二元运算符inta=10;intb=20;intc=25;intd=25;System.out.println(a+b);System.out.println(a-b);......
  • 第3章计算机进行小数运算时出错的原因
    使用二进制数表示小数与二进制表示整数类似,二进制表示小数部分的转换方法也是小数位各数值乘以位权相加表示例如将1011.0011二进制小数转换为十进制数,转换过程如下规律:0次方前面的位的位权按照1,2,3方式向左高位递增(小数点前)0次方后面的位的位权按照﹣1,-2,-3方式向右低位递减(小......
  • 计算机进行小数运算时出错的原因
       首先计算机计算也是会出现错误的,比如0.1累加100次应该为10,但若用计算机运算却得出的结果为10.000002,如图所示:   但为什么会出现错误计算呢?这是因为有一些十进制的小数无法转换成二进制数。或许先了解如何用二进制数表示小数更容易明白为什么无法转换。首先对于正......
  • 微分积分及其运算法则成对列举
         ......