文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>数学工具

数学工具

时间:2006-09-28  来源:tingyu

今天看到书上写的RPN,不明白,经过查询明白原来是很经典的东西,引用其描述:

一个任意精度的命令行“逆波兰表达式(RPN)”计算器。

 

dc 来自现代数字计算机的主要概念-堆栈。计算机中的堆栈和厨房里的一叠盘子没有什么不同:最后进来的最先出去(即LIFO,亦称后入先出)。它和先入先出(FIFO)的队列正好相反。

 

你 只能对位于堆栈顶部的数值执行运算。两个最基本的运算是:压入(在堆栈顶端置入)和弹出(从堆栈顶端取回)。一元运算从堆栈中弹出一个数值(“一元”指 “要求一个操作数”),二元运算从堆栈中弹出两个数值(“二元”指“要求二个操作数”),三元运算从堆栈中弹出两个数值(“三元”指“要求三个操作 数”)。每种情况下,运算结果总是被压回堆栈的顶部。

 

逆波兰表达式计算器(普通手持式)在技术人员和学者中很常见。它从不要求输入圆扩号。

 

历史 无扩号逻辑是由波兰数学家Jan Lukasiewicz (1878-1956)在第二次世界大战前发明的。起初,运算符位于操作数之前。但为便于计算机使用,运算符被置于操作数之后,这也就是“逆波兰表达式”中“逆”字的由来。

 

下面练习对堆栈操作:

dc [启动任意精度逆波兰表达式计算器]

1 [将数值“1”压入堆栈]

2 [向堆栈中压入另一个数值]

3 [向堆栈中压入另一个数值]

4 [向堆栈中压入另一个数值]

f [显示整个堆栈的内容;你应该看到 1 2 3 4]

p [显示堆栈顶部的数值但不改变堆栈本身;你应该看到4]

+ [执行加法运算(二院运算),即将最上面的两个数值(4,3)弹出堆栈,然后在把运算结果(7)放入堆栈]

p [显示堆栈顶部的数值;例如,刚才加法运算的结果(7)。]

p [再次显示堆栈顶部的数值以证明堆栈的内容没有被刚才的显示操作(p)改变。]

* [执行乘法运算(二元运算);即弹出堆栈中的最后两个数值,然后将运算结果(14)放入堆栈]

p [显示刚才乘法运算的结果(14)]

P [弹出堆栈中的最后一个数值 (14)]

p [显示堆栈顶部的数值]

2000 [向堆栈中压入一个较大整数]

k [为堆栈顶部的数值(例如:2000)设置精度]

1 [向堆栈中压入另一个数值]

f [显示整个堆栈的内容]

701 [向堆栈中压入另一个数值]

/ [堆栈中的最后两个数值执行出发运算,例如:2000除以701]

p [显示最后除法运算的结果]

q [退出任意精度逆波兰表达式计算器]

相关阅读 更多 +
排行榜 更多 +
Office转换器

Office转换器

商务办公 下载
牛杂网

牛杂网

购物比价 下载
极上红颜

极上红颜

角色扮演 下载