堆栈操作
(a-b)/c; 后缀表示 a b - c /
问题:不能把运算符全部放在后面,定义自己的词来解决问题;
问题:不能把运算符全部放在后面,定义自己的词来解决问题;
SWAP 这个词是交换栈中栈顶和栈顶后的一个元素位置;eg: 1 2 . . -->2 1 ok | 1 2 SWAP . . -->1 2 OK
设:a = 10 , b = 4 , c = 2 ;
2 10 4 - SWAP / .
常用堆栈操作:
12 DUP . . DUP * . |
|
a(a+b)---> a b OVER + * . | |
ab-ba == b(a-c) | |
显示栈顶元素,但是不弹出 .S
成对数堆栈操作
说明:前缀“2”表明这些堆栈操作符都是成对处理数,也能用来处理双字长数。栈标志中的字母“d”表示成对数。
eg:
堆栈操作练习
1、ab+c | c a b * + | : NUM1 * + . ; | |
2、(a-4b)/6 +c | a 4 b * - ; 6 / ; c + | : NUM2_1 * - ; : NUM2_2 6 / ; : NUM2_3 + ; |
|
3、a/8b | a 8 b * / | : NUM3 * / | |
4、0.5ab/100 | 0.5 a b * * 100 / | : NUM4_1 0.5 * * ; : NUM4_2 100 / ; |
|
5、a(2a+3) | a 2 a * 3 + * | : NUM5 2 * 3 + * ; | |
6、(a-b)/c | a b - c / | : NUM6_1 - ; : NUM6_2 / ; |
\\栈练习
a b c === c b a | SWAP ROT |
自己实现OVER功能 | : MYOVER SWAP DUP ROT ROT ; |
实现<ROT 功能与ROT相反 1 2 3 === 3 1 2 | : <ROT SWAP ROT SWAP ; |