正在加载……
专注、离线、切勿分心
快速运算符


1+ 代替 + 的好处,第一,每次使用都能节省一些词典空间;第二,由于这种词都是用各个具体机器语言特殊定义的,具有该机器结构上的优点,执行起来比用 1 和 + 快;第三,可节省编译时间;






杂项算术运算符


ABS  求栈顶的数的绝对值再放回栈中 
MIN  取栈中最前面的两个数比较大小,取最小的一个数放回栈中 
  






返回堆栈
  
   forth系统两个堆栈,一个参数堆栈(通常使用,一般叫做堆栈),一个返回堆栈
参数堆栈: 参数堆栈用来保存词与词之间所传递的参数(或称自变量)的堆栈。
返回堆栈: 用来保存一些“指针”的堆栈。也可以当作参数堆栈的辅助栈来使用,在参数堆栈进行操作时,可用返回堆栈暂存某些值。
注意:返回堆栈中无论放了什么内容,当你到达定义结束(;)之前必须把它们再移出返回堆栈,因为此时 FORTH 系统要在返回堆栈中寻找指针了。返回堆栈不能用来传递词与词之间的参数。
   //图片中的栈标志都是描述参数堆栈的
R@  复制返回栈顶的参数到参数栈

>R  和   <R  两个词必须成对出现在同一定义中。如果是用会话方式执行,则必须成对用于输入的同一行(即在按RETURN之前)
>R   SWAP   R>

利用返回栈计算 ax^2 + bx + c ( a  b  c  x  -  -  )
//后面三个与我用的pc/forth 2.0有区别




浮点运算
浮点显示:
定点计算效率高于浮点运算,效率高三倍;但是采用浮点运算程序设计效率会提高,程序员不必考虑输出结果的时候插入小数点。




乘—除换算符
*/  ( n1  n2  n3  --   n  result  )  ===>    ( n1*n2 ) / n3
n1 * n2 的中间结果为32位,是 "一个双子长中间结果"  , 用  *  和  /  不一定能代替  */  
 // 第三个的四舍五入错误,应该是73。

定义一个能舍入的白分词  R%
:  R%     10  */  5  +  10  /  ;   先除以10在加上5,这样四舍五入的时候能保证正确




比例换算的透视

*/     和      */MOD 
  

  // NEGATE   改变符号是把正数边负数,负数变正数;






posted on 2018-12-18 16:00  正在加载……  阅读(210)  评论(0编辑  收藏  举报