小编Leh*_*ehs的帖子

一种在Forth中减去大整数的错误算法

我有一个神秘的错误,用于减去各种长度的无符号整数的算法.它几乎适用于每对数字,但如果n不小于单元格中的位数(2^n +1)-(2^n - 1) <> 2.我无法理解为什么算法不起作用.

数字存储在"cellimal"系统中的数组中(base = 2 ^ bits),最低有效单元格为lowmem.ad1处的数组将从ad2处的数组中减去,两者都是相同的维度len,结果应存储在ad2:

false borrow ! len 0
do i ad2 + @ borrow @ +
   i ad1 + @ 2dup u< dup borrow !
   if 1 swap 0 d- drop                      \ subtraction with borrow
   else -                                   \ subtraction without borrow
   then i ad2 + ! cell
+loop
Run Code Online (Sandbox Code Playgroud)

注意:我认为错误来自于从包含零值的单元格借用...

也许有人可以纠正算法?

arrays algorithm forth biginteger gforth

6
推荐指数
1
解决办法
180
查看次数

如何在Forth中实现Y-combinator?

Rosetta Code上,Forth中没有实现Y-combinator.

我怎样才能做到这一点?如何在Forth中使用Y-combinator?为什么?

computer-science forth gforth

5
推荐指数
2
解决办法
341
查看次数

将焦点更改回控制台窗口

我对Windows编程的了解接近于零。但现在我已经制作了一个从 Windows 控制台运行的 Forth 程序,它打开一个原始的图形窗口。问题是我想通过按键来控制程序,但是当程序启动时,焦点没有在控制台窗口上,而是在图形窗口上。

如何改变后焦距?我想我必须使用一些 WINAPI,但是哪个呢?

c# forth setfocus windows-console

5
推荐指数
0
解决办法
1659
查看次数

在ANS Forth中发生了什么'嘀嗒'?

正如我记得FIG-Forth的'tick',当一个单词不在单词表中时,它可以在没有堕胎的情况下使用:

' the_word 
Run Code Online (Sandbox Code Playgroud)

如果它出现在单词列表中,则引用该单词,否则给出"假".

是否有可能在ANS Forth中构建类似于与[if],[then]和[else]一起使用的东西?

forth gforth

3
推荐指数
1
解决办法
333
查看次数

如何从 Gforth 网站读取原始代码?

我想要一个像这样的词

read-site ( add n buff max -- n flag )
Run Code Online (Sandbox Code Playgroud)

其中“add n”是站点名称缓冲区,“buff max”是应读取 ASCII 文本的缓冲区,“n”是读取的字节数,flag如果操作成功则为 true。

这在 Linux、Android 或 Windows 的 Gforth 中可能吗?

networking forth gforth

2
推荐指数
1
解决办法
396
查看次数