微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

colorforth / mod算法如何工作?

如何解决colorforth / mod算法如何工作?

我最近一直在看Chuck Moore的colorForth,并且发现了以下代码片段(以传统语法呈现):

: /mod for begin over over . + -if drop 2* [ swap ] next ; then over or or - 2* - next ;

具有以下说明:

   Divide operation: trial subtract and shift in either 0 or 1

对于如何实现完全除法运算,我确实感到困惑。我意识到2*移为0,- 2* -移为1,而over or or实现了nip操作。我也了解混合循环以及组合。

这是我不足的地方。

  1. 似乎期望堆栈上有两个项目,分子和分母,这很有意义。但是,首字母for将TOS推入返回堆栈,而在返回堆栈上仅留下一项。 over over操作可以使用两个存在的值,因此我不确定发生了什么。
  2. 他提到了减法,但是除了- 2* -分支(已经提到在1中转移)之外,没有发生反转。
  3. 我不确定如何仅将1s或0s(除数?)内的值来逐步构造商。

一些想法:

  1. 也许这取决于Chuck正在编程的芯片的特定字长以及添加足够次数后的翻转
  2. 也许缺少使该分母剂反转的前导,导致每个循环中都提到了减法。

colorForth和其他Forths之间的某些特质:

  • .是Chuck芯片上用于计时目的的点子。
  • -是按位求逆,而不是减法。
  • or是排他性的,或不是包含性的或

有关其他信息,请参见以下来源: Description of function and use of colorForth opcodes

解决方法

仅供参考:有关此问题的excellent answer由Ulrich Hoffmann发布在comp.lang.forth中。


请编辑此帖子以使其更详细。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。