《程序是怎样跑起来的》第三章读后感

在此书第二章中,主要讲到了数据用二进制的表示方法,但只讲的是整数,而第三章讲到的则是小数用二进制的表示方法。

如图,我是这样理解的,在一组数据中,十进制转换二进制,拿位权来讲,小数点前第n位,是2的n-1次幂(n≥1),而小数点后的转换则稍微不同,小数点后第n位,是2的-n次幂(n≥1)。出现数据有小数位时,将转换后的整数部分加小数部分即可得到最后的结果。在初学计算机时,很多人都认为计算机的运算是最准确,不会出错的,其实不然,比如十进制0.1就无法正确转换为二进制数,其原因很简单,我们知道二进制数只由0和1这两个数字组成,所以如下表,以小数点后四位举例:

如图上那行文字所说,小数点后四位的数值,二进制数是连续的,转换为十进制则不然,图中第二列可以看出,0——0.625之间的小数就无法用小数点后四位的二进制数来表示,无限增加二进制小数点后的位数,只会得到一个循环小数,最后只会变成近似值,而非精确的数值。
接下来是浮点数的讲解,浮点数在C语言中和Java语言中的讲解类似,双精度浮点数用64位写作double,单精度浮点数用32位写作float,其实计算机处理数据并不是处理二进制诸如1011.1011这样的数据,而是以这种浮点数来表示的,浮点数的表示形式分为三部分,符号部分、指数部分和尾数部分,符号部分占用位数都是同样的一位,由于两种数使用的位数不同,故双精度的浮点数表示范围要大于单精度,这并不难理解。而在计算机运算的过程中,想要保证计算的准确性,就需要正确运用单双精度浮点数,但运用此浮点数难免也会出错,避免的方法作者讲了两种,我认为后者的方法更为巧妙,将小数扩大倍数为整数,在计算结果出来后再缩小相应的倍数即可。
而在本章中介绍的EXCESS系统和正则表达式,我还是没太能理解。

posted on 2024-02-18 22:09  半山山山山  阅读(3)  评论(0编辑  收藏  举报

导航