随笔分类 -  程序是怎样跑起来的

摘要:莫尔斯编码是根据日常文本中各字符的出现频率来决定表示各字符的编码的数据长度的。不过,该编码体系,对AAAAAABBCDDEEEEEF这样的特殊文本并不是最适合的。在莫尔斯编码中,E的数据长度最短,而在AAAAAABBCDDEEEEEF这个文本中,出现最频繁的是字符A。因此,应该给A分配数据长度最短的 阅读全文
posted @ 2023-02-11 20:26 叮铃铛铛 阅读(28) 评论(0) 推荐(0)
摘要:压缩技巧:哈夫曼算法 哈夫曼算法是哈夫曼(D.A.Huffman)于1952年提出来的压缩算法。日本人比较常用的压缩软件LHA(LHA是吉崎荣泰开发的一款免费压缩软件),使用的就是哈夫曼算法。 为了更好地理解哈夫曼算法,首先要抛弃掉“半角英文数字的1个字符是1个字节(8位)的数据”这一概念。 文本文 阅读全文
posted @ 2023-02-11 20:10 叮铃铛铛 阅读(78) 评论(0) 推荐(0)
摘要:在实际的文本文件中,同样字符多次重复出现的情况并不多见。虽然针对相同数据经常连续出现的图像、文件等,RLE算法可以发挥不错的效果,但它并不适合文本文件的压缩。不过,因为该压缩机制非常简单,因此使用RLE算法的程序也相对更容易编写。 借助RLE算法对而各种文件进行压缩的结果: 通过上图可以看出,使用R 阅读全文
posted @ 2023-02-11 19:58 叮铃铛铛 阅读(67) 评论(0) 推荐(0)
摘要:把文件内容用“数据×重复次数”的形式来表示的压缩方法称为RLE (Run Length Encoding,行程长度编码)算法(图6-2) RLE算法是一种很好的压缩方法,经常被用于压缩传真的图像等。因为图像文件本质上也是字节数据的集合体,所以可以用RLE算法来压缩。 阅读全文
posted @ 2023-02-11 19:39 叮铃铛铛 阅读(50) 评论(0) 推荐(0)
摘要:文件储存的基本单位是1字节(=8位) DOC、LZH和TXT这些扩展名中LZH是压缩文件的扩展名。 文件内容用“数据的值×循环次数”来表示的压缩方法是RLE算法。 在Windows 计算机经常使用的SHIFT JIS字符编码中,1个半角英数是用1字节(=8位)的数据来表示的。 BMP(BITMAP) 阅读全文
posted @ 2023-02-11 19:33 叮铃铛铛 阅读(178) 评论(0) 推荐(0)
摘要:磁盘的物理结构是指磁盘存储数据的形式。磁盘是通过把其物理表面划分成多个空间来使用的。划分的方式有扇区方式和可变长方式两种,前者是指将磁盘划分为固定长度的空间,后者则是指把磁盘划分为长度可变的空间。 一般的Windows计算机所使用的硬盘和软盘,采用的都是扇区方式。扇区方式中,把磁盘表面分成若干个同心 阅读全文
posted @ 2023-02-10 21:29 叮铃铛铛 阅读(239) 评论(0) 推荐(0)
摘要:由于Windows具有多任务功能,在巨大的Windows操作系统中可以同时运行多个应用,因此,即使是512MB的内存,有时也无法保证流畅运行。Windows操作系统经常为内存不足所困。 像Windows这样,窗口的菜单及图表等都可以进行可视化操作的方式称为图形用户界面。Windows的前身MS-DO 阅读全文
posted @ 2023-02-10 21:15 叮铃铛铛 阅读(45) 评论(0) 推荐(0)
摘要:虚拟内存是指把磁盘的一部分作为假想的内存来使用。这与磁盘缓存是假想的磁盘(实际上是内存)相对,虚拟内存是假想的内存(实际上是磁盘)。 通过借助虚拟内存,在内存不足时也可以运行程序。例如,在只剩下5MB内存空间的情况下也能运行10MB大小的程序。不过,就如本章开头所讲述的那样,CPU只能执行加载到内存 阅读全文
posted @ 2023-02-10 20:54 叮铃铛铛 阅读(120) 评论(0) 推荐(0)
摘要:磁盘缓存指的是把从磁盘中读出的数据存储到内存空间中的方式。这样一来,当接下来需要读取同一数据时,就不用通过实际的磁盘,而是从磁盘缓存中把内容读出。使用磁盘缓存可以大大改善磁盘数据的访问速度。如下图: 磁盘缓存(disk cache):磁盘缓存的缓存(cache)是高速缓存、仓库的意思。 Window 阅读全文
posted @ 2023-02-10 20:47 叮铃铛铛 阅读(51) 评论(0) 推荐(0)
摘要:从都具有存储程序命令和数据这点来看,内存和磁盘的功能是相同的。在计算机的5大部件( 一般把输入装置、输出装置、存储器、运算器和控制器这5种部件设备称为计算机的5大部件 )中,内存和磁盘也都被归类为存储部件。不过,利用电流来实现存储的内存,同利用磁效应来实现存储的磁盘,还是有差异的。而从存储容量来看, 阅读全文
posted @ 2023-02-10 20:34 叮铃铛铛 阅读(24) 评论(0) 推荐(0)
摘要:二叉查找树是指在链表的基础上往数组中追加元素时,考虑到数据的大小关系,将其分成左右两个方向的表现形式。 例如,假设我们事先把50这个值保存到了数组中。那么,如果接下来的值比先前保存的数值大的话,就要将其放到右边,反之如果小的话就放在左边。但实际的内存并不会分成两个方向,这是在程序逻辑上实现的(图4- 阅读全文
posted @ 2023-02-09 21:05 叮铃铛铛 阅读(18) 评论(0) 推荐(0)
摘要:链表和而叉查找树,但是不用考虑索引的顺序就可以对数组元素进行读写的方式。 链表,可以更加高效的对数组元素进行追加和删除处理。 二叉查找树,可以更加高效的对数组数据进行索引。 在数组的各个元素中,除了数据的值之外,通过为其附带上下一个元素的索引,即可实现链表。( 数据的值+下一个元素的索引=一个元素) 阅读全文
posted @ 2023-02-09 20:53 叮铃铛铛 阅读(27) 评论(0) 推荐(0)
摘要:栈和队列 栈和队列,都可以不通过指定地址和索引来对数组的元素进行读写。需要临时保存计算过程中的数据、连接在计算机上的设备或者输入输出的数据时,都可以通过这些方法来使用内存。如果每次保存临时数据都需指定地址和索引,程序就会变得比较麻烦。 栈和队列的区别在于:数据出入的顺序是不同的。在对内存数据进行读写 阅读全文
posted @ 2023-02-09 20:29 叮铃铛铛 阅读(81) 评论(0) 推荐(0)
摘要:数组是指多个同样数据类型的数据在内存中连续排列的形式。作为数组元素的各个数据会通过连续的编号被区分开来,这个编号称为索引(index)。指定索引后,就可以对该索引所对应地址的内存进行读写操作。而索引和内存地址的变换工作则是由编译器自动实现的。 代码清单4-3表示的是在C语言中定义char类型、sho 阅读全文
posted @ 2023-02-09 15:14 叮铃铛铛 阅读(24) 评论(0) 推荐(0)
摘要:指针也是一种变量,它所表示的不是数据的值,而是存储着数据的内存的地址。通过使用指针,就可以对任意指定地址的数据进行读写。虽然前面所提到的假想内存IC中仅有10位地址信号,但大家在Windows计算机上使用的程序通常都是32位(4字节)的内存地址。这种情况下,指针变量的长度也是32位。 上图清单,是定 阅读全文
posted @ 2023-02-09 15:09 叮铃铛铛 阅读(21) 评论(0) 推荐(0)
摘要:虽然内存的实体是内存IC,不过从程序员的角度来看,也可以把它假想成每层都存储着数据的楼房,并不需要过多地关注内存IC的电源和控制信号等。因此,之后的讲解中我们也同样会使用楼房图(或者与楼房相似的图)。内存为1KB时,表示的是如图4-3所示的有1024层的楼房(这里地址的值是从上往下逐渐变大,不过也有 阅读全文
posted @ 2023-02-09 15:01 叮铃铛铛 阅读(18) 评论(0) 推荐(0)
摘要:计算机是进行数据处理的设备,而程序表示的就是处理顺序和数据结构。由于处理对象数据是存储在内存和磁盘上的,因此程序必须能自由地使用内存和磁盘。因此,大家有必要对内存和磁盘的构造有一个物理上的(硬件的)和逻辑上的(软件的)认识。 有十个地址信号引脚的内存IC(集成电路)可以指定的地址范围用二进制数来表示 阅读全文
posted @ 2023-02-08 22:46 叮铃铛铛 阅读(44) 评论(0) 推荐(0)
摘要:二进制数和十六进制数的关系: 在以位为单位表示数据时,使用二进制数很方便,但如果位数太多,看起来就比较麻烦。因此,在实际程序中,也经常会用十六进制数来代替二进制数。在C语言程序中,只需在数值的开头加上Ox(0和x)就可以表示十六进制数。 二进制数的4位,正好相当于十六进制数的1位。例如,32位二进制 阅读全文
posted @ 2023-02-08 22:27 叮铃铛铛 阅读(141) 评论(0) 推荐(0)
摘要:计算机计算出错的原因之一是,采用浮点数来处理小数(另外,也有因“位溢出”而造成计算错误的情况)。作为程序的数据类型,不管是使用单精度浮点数还是双精度浮点数,都存在计算出错的可能性。接下来将介绍两种避免该问题的方法。(1)是回避策略,即无视这些错误。 根据程序目的的不同,有时一些微小的偏差并不会造成什 阅读全文
posted @ 2023-02-08 22:23 叮铃铛铛 阅读(105) 评论(0) 推荐(0)
摘要:在代码示例中,如何用单精度浮点数来表示十进制数0.75 该程序执行后,十进制数0.75用单精度浮点数来表示就变成了0-01111110-10000000000000000000000(图3-7)。 因为0.75是正数,所以符号位是0。指数部分的1111110是十进制数126,用EXCESS系统表现就 阅读全文
posted @ 2023-02-08 22:06 叮铃铛铛 阅读(26) 评论(0) 推荐(0)