读程序是怎样跑起来的第二章

IC,是集成电路的简称,有模拟IC和数字IC两种。IC的所有引脚,只有直流电压0V和5V两个状态。也就是说IC的一个引脚,只能表示两个状态。
程序中,即使是十进制和文字等记述信息,在编译后也会转换成二进制数的值,所以,程序运行时计算机内部处理的也是用二进制数表示的信息。对于用二进制数表示的信息,计算机不会区分它的数值,文字还是某种图片的模式等,而是根据编写程序的各位对计算机发出的指示来进行信息的处理或运算。


20世纪50年代,波兰数学家Jan Lukasiewicz,当时也和我们现在的同学们一样,困惑于如何才可以搞定计算机的四则运算,不知道他是否也像牛顿被苹果砸到头而想到万有引力的原理,或者还是阿基米德在浴缸中洗澡时想到判断皇冠是否纯金的办法,总之他也是灵感突现,想到一种不需要括号的后缀表达法,我们也把它称为逆波兰(Reverse Polish Notation,RPN)表示。这种后缀表示法,是表达式的一种新的显示方式,非常巧妙地解决了程序实现四则运算的难题。
我们先来看看,对于"9+(3-1)*3+10/2"(我们平时所用的标准四则运算的表达式也称为中辍表达式
),如果要用后缀表示法应该是什么样子:9 3 1 - 3 * + 10 2 / +,这样的表达式称为后缀表达式,叫后缀表达式原因是在于所用的符号都是在要运算数字的后面出现。显然,这里没有了括号。
后缀表达式:9 3 1 - 3 * + 10 2 / +
规则:从左到右遍历表达式的每个数字和符号,遇到是数字就进栈,遇到是符号,就将处于栈顶两个数字出栈,进行运算,运算结果进栈,一直到最终获得结果。
1.初始化一个空栈。此栈用来对要运算的数字进出使用。
2.后缀表达式中前三个都是数字,所以9、3、1进栈。
3.接下来是“-”,所以将栈中的1出栈作为减数,3出栈作为被减数,并运算3-1得到2,再将2进栈。
4.接着是数字3进栈。
5.后面是“*”,也是意味着栈中3和2出栈,2与3相乘,得到6,并将6进栈。
6.下面是“+”,所以栈中6和9出栈,9与6相加,得到15,将15进栈。
7.接着是10与2两数字进栈。
8.接下来是符号“/”,因此,栈顶的2与10出栈,10与2相乘,得到5,将5进栈。
9.最后一个是符号“+”,所以15与5出栈并相加,得到20,将20进栈。
10.结果是20出栈,栈变为空。


计算机中的所有数据,数字字符,控制信号,地址等,都是采用二进制的方式编码,二进制是逢二进位的进位制,0、1是基本算符。一个bit(位)就是一个二进制位(0或1),Byte(字节)是内存的基本存储单位。一个字节有八位二进制组成。存储器的每个存储单元都有一个地址;地址是标识字节在内存中位置的唯一编号。移位运算也可以通过数位移动来代替乘法运算和除法运算。

猜你喜欢

转载自www.cnblogs.com/gltks/p/10586652.html
今日推荐