当把算法用于人类和计算机之间传递智能时,文字形式算法的主要缺点是表示方法不规范,不同的人描述的相同的算法在用词和语句上有很大差异。又例如,计算机在执行每条语句前,需要首先“识别”出每条语句,C语言程序中每条语句结束后增加的语句结束标记符号“;”,表示当前的一条语句到此结束,这样的标识就方便了计算机对程序语句的“识别”。......
2023-11-18
首先看一个最简单的算法,该算法要求计算两个二进制数的和。我们知道,计算机中要处理的数据都存放在内存中,处理后的结果数据也存储在内存中。
设被加数放于内存单元x中,加数放于内存单元y中,内存单元sum为存放和的单元,二进制数求和算法即为:把地址x中的数值加上地址y中的数值,其和放于内存单元sum中。
我们在第2章讲过,内存单元的地址是用很多位0、1符号表示的(通常为20位或更多位),这样,包括了三个内存地址加法操作的0、1编码将会很长,而很多操作都可仅包含一个内存单元地址,这些操作的0、1编码将会很短。为了处理方便和提高效率,我们希望所有操作的编码长度基本相同。我们可以增加若干个临时数据存放地,规定每次要处理的数据都先存放在这些临时数据存放地中,由于这些临时数据存放地个数很少(例如4个),其编码长度就很短(例如2位)。这些临时数据存放地就是下面讲的中央处理器中的寄存器。寄存器既可以用来临时存放要处理的数据,也可以用来临时存放内存单元的地址。
这样,二进制数求和问题的算法可以表示为:
(1)从内存单元x中取出被加数放于寄存器A;
(2)寄存器A中的数值加上内存单元y中的数值,其和放于寄存器A中;
(3)把寄存器A中的数值存于内存单元sum中。
上述二进制数求和算法中包含了三种不同的操作:从某个内存单元中取出数值放于某个寄存器中;把某个寄存器中的数值加上某个内存单元中的数值,其和存于寄存器中;把某个寄存器中的数值存于某个内存单元中。
分析各种典型问题的算法,可以归纳整理出算法中的基本操作集合。一般来说,算法中的基本操作包含如下几种类型:
(1)数据传送:从某个内存单元中取出数值放于某个寄存器中;把某个寄存器中的数值放于某个内存单元中。
(2)算术运算:把某个寄存器中的数值加上某个内存单元中的数值,其和存于寄存器中;把某个寄存器中的数值减去某个内存单元中的数值,其差存于寄存器中;把一个寄存器中的数值加上另一个寄存器中的数值,其和存于第三个寄存器中;把一个寄存器中的数值减去另一个寄存器中的数值,其差存于第三个寄存器中。
(3)逻辑运算:两个寄存器中的数值进行逻辑与(AND)运算,结果放于第三个寄存器中:两个寄存器中的数值进行逻辑或运算(OR),结果放于第三个寄存器中;把某个寄存器中的数值求反(NOT),结果放于另一个寄存器中。
(4)移位:按照某个寄存器中的数值把某个寄存器中的数值左移或右移。
(5)转移:转移到某个内存单元地址去执行程序(实现方法是把操作数部分的数值赋予程序计数器)。
(6)输入/输出:从键盘输入数据,把数据输出显示在屏幕上。
(7)控制:结束程序的运行。(www.chuimin.cn)
我们归纳出了算法中的所有基本操作,就可以把算法中的操作步骤表示为基本操作,这样,算法就表示成了基本操作的集合。
例如,计算两个二进制数乘积pro=x*y问题,图3-1给出了两个二进制数相乘的方法,根据图3-1所示的方法,可以编写出用基本操作表示的处理该问题的算法。
图3-1 二进制数相乘
设被乘数放于内存单元x中,乘数放于内存单元y中,内存单元pro为存放乘积的单元,分析图3-1所示的二进制数相乘过程可知,用基本操作表示的两个二进制数相乘的算法如下:
(1)从内存单元x中取出被乘数放于寄存器A;
(2)从内存单元y中取出乘数放于寄存器B;
(3)把寄存器C置为0;
(4)若寄存器B中最低位为0,则转移到步骤(6);
(5)把寄存器C中的数值和寄存器A中的数值相加,和存于寄存器C中;
(6)把寄存器A中的数值左移一位;
(7)把寄存器B中的数值右移一位;
(8)若寄存器B中的位数尚未移完,则转移到步骤(4);
(9)把寄存器C中的乘积存于内存单元pro中。
可见,利用基本操作可以编写出两个二进制数相乘的复杂问题的算法。
有关计算机导论的文章
当把算法用于人类和计算机之间传递智能时,文字形式算法的主要缺点是表示方法不规范,不同的人描述的相同的算法在用词和语句上有很大差异。又例如,计算机在执行每条语句前,需要首先“识别”出每条语句,C语言程序中每条语句结束后增加的语句结束标记符号“;”,表示当前的一条语句到此结束,这样的标识就方便了计算机对程序语句的“识别”。......
2023-11-18
图1-4 不同主体之间的智能传递要让人利用算法把智能传递给机器,需要做到的是:机器必须能正确地理解并正确地执行算法。在如图1-1所示的冯·诺依曼体系结构计算机中,程序是计算机能理解的求解某一特定问题的算法,人利用输入部件把程序输入到计算机,输入的程序存储到计算机的存储部件,运行程序需要的数据也存储到计算机的存储部件,处理部件根据程序一步一步地执行,程序运行的结果通过输出部件输出给人。......
2023-11-18
在第1章我们简单介绍了算法的概念,并指出:软件的主体是程序,程序的核心是算法。算法既是人类之间交流智能的工具,也是人和机器之间交流智能的工具。算法的可终止性是指算法应能在有限的操作步骤后结束。我们仍以第1章给出的求解两个整数的最大公约数问题的算法为例,来讨论算法的定义问题。所以,上述方法不是一个算法。计算机求解任何问题,必须在一个有限的时间段内得到处理结果,算法的可终止性保证了这一点。......
2023-11-18
我们在7.2节中曾指出,过程是算法的基本元素,过程可以使一个求解大问题的算法分解为若干个求解子问题算法的有机合成。过程的参数是局部变量。如图7-6所示,过程调用时,实参拷贝数值6给虚参,若过程运行时虚参的数值改变为8,则过程结束后主程序中实参的数值还是原来的6,而不是8。......
2023-11-18
目前主板上的内存插槽有两种。图11-5 DIMM 插槽结构形式图3.芯片组一台微机的性能,首先取决于CPU,其次取决于主板。而主板的性能主要取决于其采用的控制芯片组的性能。目前主板上常见的扩展槽有3种:ISA扩展槽、PCI扩展槽和APG扩展槽。PCI32是32位的PCI总线,其标准速度是33MHz,采用124针连接器。主板上的IDE接口为40个针型接口。......
2023-11-18
触发器就是这样一种最基本的电子装置。图2-9 逻辑元件符号和功能表AND;OR;NOT用基本的逻辑元件可以构造出一种称作触发器的逻辑元件。这种不确定的现象称为竞争现象,竞争现象将使触发器的输出状态不确定。触发器的这种可保持信号状态的特点使我们可以利用它来存储数据。......
2023-11-18
大部分高级语言都给出了可以方便表示这两种情况的循环语句。这样循环体的语句组S将总共被执行/c次。用第7章讨论的计算1+2+3++100问题的C语言程序来说明两种方式的循环语句。图7-3 for循环执行流程示例显然,对于循环次数已知的循环问题来说,使用第二种循环语句比使用第一种循环语句更简洁明了。......
2023-11-18
相关推荐