如何解决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操作。我也了解混合循环以及组合。
这是我不足的地方。
- 似乎期望堆栈上有两个项目,分子和分母,这很有意义。但是,首字母
for
将TOS推入返回堆栈,而在返回堆栈上仅留下一项。over over
操作可以使用两个存在的值,因此我不确定发生了什么。 - 他提到了减法,但是除了
- 2* -
分支(已经提到在1中转移)之外,没有发生反转。 - 我不确定如何仅将1s或0s(除数?)内的值来逐步构造商。
一些想法:
colorForth和其他Forths之间的某些特质:
-
.
是Chuck芯片上用于计时目的的点子。 -
-
是按位求逆,而不是减法。 -
or
是排他性的,或不是包含性的或
有关其他信息,请参见以下来源: Description of function and use of colorForth opcodes
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。