FORTH 算术运算——计算器格式
词汇表 栈标示法
+ (n1 n2 - sum) //sum 加 |
- (n1 n2 - diff) //differ 减 |
* (n1 n2 - prod) //product 乘 |
/ (n1 n2 - quot) //quotient 除 |
用上面介绍的运算符运算和利用 . 来打印结果,不能使结果不在(-32768—32767)之间。不然会有意想不到的错误。这个范围叫做“带符号单字长数”。
eg: 4+(17*12) 17 12 * 4 + . return
![3pc+F9f6D83K+P8NUID3U0ADdAM0QDdAA3QDNEA3QAN0AzR8AEL7L1vTCZljAAAAAElFTkSuQmCC](https://i-blog.csdnimg.cn/blog_migrate/bb12f932e6dca4d20e3ec5fa45288360.png)
过程如下:
![riTngFVAAAAABJRU5ErkJggg==](https://i-blog.csdnimg.cn/blog_migrate/760da43f309e83532d461936a7b10832.png)
![jgHDR7AtMZgRB47EYjAjDmxLDGbEgW2JwYw4sC0xmBEHtiUGM+LAtsRgRhzYlhjMiAPbEoMZcWBbYjAjDmxLDGbE8X+7LnZvLVu6ZgAAAABJRU5ErkJggg==](https://i-blog.csdnimg.cn/blog_migrate/7151bad6813b490775de3bed1cc4b56a.png)
![KXpw579+6dOnXq3y3rvNjVhxVDg09KOYBlcQDL4gCWxQEsiwNYFgf+AyPWEfwGExNoAAAAAElFTkSuQmCC](https://i-blog.csdnimg.cn/blog_migrate/5546503ca84202ff62f7c0a0190ffd89.png)
![kHn5R90Xv7xf6KNzrc+qNTWAAAAAElFTkSuQmCC](https://i-blog.csdnimg.cn/blog_migrate/0fea55c537bea8c327da5a74a56001e1.png)
![dWBgvShIH0oSB8K0oeC9KH4ByJLkCMHbnm+AAAAAElFTkSuQmCC](https://i-blog.csdnimg.cn/blog_migrate/9eb5d659351cedeb8914f13404279117.png)
FORTH的算术运算——定义格式
1码 = 36英寸; 1英尺 = 12英寸;
: YARDS 36 * ; | : YARD YARDS ; |
: FEET 12 * ; | : FOOT FEET ; |
: INCHES ; | : INCHE INCHES ; |
![4HZqgEdMlfNDoAAAAASUVORK5CYII=](https://i-blog.csdnimg.cn/blog_migrate/c3b6d958767088cdda386e8bb105bcc9.png)
一个定义中可以包含多个运算符;
![oL2Cv975z3nUPyfAghAO7LIgTBDCEEwQwhBMEMIQTBDCEEwQwhBPENJqRHwT4qE2gAAAAASUVORK5CYII=](https://i-blog.csdnimg.cn/blog_migrate/75064b9c825077b83414a2eb1b87f5f5.png)
类似这种5个加号“+”也可以定义为一个词; eg: : 5#SUM + + + + + ;
![jzv+nj+YlV9H4ch67CSRWgAAAABJRU5ErkJggg==](https://i-blog.csdnimg.cn/blog_migrate/86f7b5792fae3d7ecb81e69015c96bdb.png)
表达式(a+b)*c 的后缀表达式 c a b + *
forth 定义: : SOLUTION + * ; 使用: c a b SOULTION
//上面的定义没有写弹栈显示结果,运行完后要查看结果必须再运行 .
除法运算
词 / 的用法和高级程序设计语言一样
![FO1t3ysD49ddftbW1UVyGDBkyZMj4LyBTRBkyZMiQIQMAAP4PoZXw7QMiMXcAAAAASUVORK5CYII=](https://i-blog.csdnimg.cn/blog_migrate/0d7cbe429d52920c0e7b89b4f60b1015.png)
/MOD 上面的栈标示法显示 最右边的是商 倒数第二项是余数 ;说明进栈是先余数进栈然后才是商,出栈最先出来的是商,然后出来的才是余数。
![BPwQIAZ7GYAAQQACBAEIEAQgQBCA8AuqfaaHmbgdJgAAAABJRU5ErkJggg==](https://i-blog.csdnimg.cn/blog_migrate/95e3602ff5b1ed872f72c0cb142a9e9a.png)