《程序是怎样跑起来的》第三章
这一章讲述了计算机为什么在计算小数时会出错。就例如书中的0.1累加100次也得不到10,这就是因为一些十进制的小数无法转化为二进制,小数点后面四位用二进制数表示时的数值范围为0.0000 ~ 0.1111。因此,这里只能表示0.5,0.25,0.125,0.0625这四个二进制小数点后面的位权组合组成的小数。因此计算机在计算一些小数的时候会出错。
浮点数是用符号,尾数,基数和指数这四个部分来表示的小数。说到浮点数,我们知道它分为单精度和双精度。单精度浮点数一共32位,其中包括1位符号,8位指数,23位尾数。双精度浮点数包括1位符号,11位指数,52位尾数。
尾数部分使用正则表达式,可以将表现形式多样的浮点数统一为一种表现行式。十进制数的浮点数遵循小数点前面是0,后面第一位不能是0的规则;二进制中将小数点前面的值固定为1的正则表达式。指数部分中使用的EXCESS系统是通过将指数部分表示范围的中间值设置为0,使得负数不需要用符号来表示。
最后关于如何避免计算机计算出错。1.回避:根据程序目的不同,有时一些微小的偏差不会造成什么问题;2.将小数转化为正数
进行正数运算只要不超过可处理的数值范围,就一定不会出现问题;3.BCD编码也是一种使用二进制表示十进制的方法