感觉之前的进度有点慢了,嘿嘿嘿,这次看了两章,第三,四章主要讲述计算机在计算小数时会出错的原因,让内存化方为圆。
我们通过口算可以知道,将0.1累加100次的结果等于10。然而,在程序中,将0.1累加100次,在屏幕上显示的结果却不是10。其实出现这种错误的原因,既不是程序编写的错误,也不是计算机本身的错误,当然更不是程序语言的问题了。如果我们知道计算机是如何处理小数的,那么,我们也就可以明白计算机出现这种错误是理所当然的了。其实我们可以通过程序语言来累加,最后计算机运行的结果其实是10.000002。
关于如何用二进制表示小数这个问题,我找到一张图片来形容,图片如下:
我们可以先例举一个将小数转换成二进制:首先将一个小数如:235.725的小数部分取出,即:0.725,将其乘以进制数二进制就乘以2后得到1。45,取其整数部分1为二进制小数的第一项(十分位),在将小数部分0。45乘2得0。9,取其整数部分为二进制小数的第二位(百分位)0,在将其小数部分0。9乘2,得1。8,取其整数部分为二进制小数的第三位(千分位)1,取其小数部分0。8再乘2……以此类推,直到值为0或形成循环小数则停止。
第4章主要讲述了让内存化方为圆。计算机是处理数据的机器,而程序负责规定处理步骤和数据结构。作为处理对象的数据储存在内存和磁盘中,因此程序员必须能够灵活地使用内存和磁盘。为此,我们不仅要理解计算机内存和磁盘物理(硬件)结构,也要理解他们的逻辑(软件)结构。内存本质上就是一种名为内存芯片的装置,内存芯片分为ROM(只读存储器),RAM(随机存储器)等不同类型。但从外部来看,他们的基本工作原理是相同。内存芯片上有很多引脚,这些引脚负责连接电源,以及输入输出地址信号,数据信号和控制信号,通过指定地址,就可以对数据进行读写。(RAM大体上可以分为需要刷新的DRAMA(动态RAM)和不需要刷新的SRAM(静态RAM)两种)。
下图示例内存引脚配置:
这样一块儿内存芯片能存储多少数据呢?数据信号引脚有D0D7共八根,因此我们知道它一次可以输入输出的数据长度为八比特,等于一个字节。地址信号引脚有A0A9共十根,因此可以指定0000000000~1111111111这1024个地址,地址表示的是数据存储的位置,因此这块内存芯片能够存储1024个1字节的数据,由于1024=1k,所以这块内存的容量是1 KB