《程序是怎样跑起来的》第三章与第四章
本篇将概述第三章 计算机进行小数运算时出错的原因 和第四章 熟练使用有棱有角的内存 两章内容
第三章
在计算机进行计算时,并不是我们想象中的毫无错误,实际上会因为不同的原因导致计算结果的错误。这就与我们本章内容有关联了。
在运算时,不论整数运算还是小数运算计算机都是通过二进制进行计算的。小数由二进制转化为十进制的方法也与整数相同。在小数运算是出现错误的原因是一些小数无法通过十进制完全转换为二进制数。二进制只能表示特殊的小数如0.5、0.25、0.125等数字之和表示的十进制数。而不在这些数字中的小数则无法正确表示。
编程语言中通常使用浮点数来表示小数。如double和float。浮点数通过符号、尾数、基数和指数表示小数。
符号部分与整数相同以0为正数,1为负数。尾部部分通过正则表达式表示。指数部分则由EXCESS系统表示。在使用计算机进行小数运算是可以通过回避策略(即取近似值)和将小数换算成整数两种方法来避免错误。
第四章
内存是一种名为内存IC的电子元件。IC包括DRAM、SRAM、ROM等多种形式。内存IC有电源、地址信号、数据信号、控制信号等用于输入输出的大量引脚,通过为其制定地址,来进行数据的读写。
A0-A9指定0000000000-1111111111共1024个地址,D0~D7共8个,可以输入输出8位的数据可以用来储存1024个1字节的内容,即1KB。通常情况下往往一个内存有更多的引脚,这样便能以较少的储存更多的数据。(WR写入,RD写出)
指针:用来存储内存地址的变量。数组:是多个同样数据类型的数据在内存中连续排列的形式。可通过索引来实现读写操作。
栈:是后入先出的方式。队列:是先入先出的方式。栈和队列需要使用特殊的函数来写入(Push和EnQueue)、读取(Pop和DeQueue)数据。(队列是以环形写入、读取的方式进行的)
链表:数值与上下元素索引构成的。链表在数据的插入与删除方面更加快捷。
二叉查找数:通过数值大小的逻辑关系来链接的。在查找方面有更高的效率。