脑残语言的记忆指数



我是这门语言的新手。

命令 < 用于递减内存索引的指针。

下面的代码用于添加两个个位数。

根据这个程序,它首先接受输入,然后将其存储在内存[0]中,因为最初的内存索引位于位置0。然后,它递减内存索引,使其现在为 -1,因此它应该显示运行时。为什么它在 IDEone 中成功运行?

内存块是否在循环中?

,                           ;read character and store it in p1
------------------------------------------------   ;return ascii to Dec
<                           ;move pointer to p2 (second byte)
,                           ;read character and store it in p2
------------------------------------------------ ;return ascii to Dec
[                           ; enter loop
-                           ; decrement p2
>                           ; move to p1
+                           ; increment p1
<                           ; move to p2
]                           ; we exit the loop when the last cell is empty
>                           ;go back to p1
++++++++++++++++++++++++++++++++++++++++++++++++     ;return Dec to ascii
.                           ;print p1

该代码显然有一个错误,所有<都应该>,反之亦然。

未定义如果尝试将指针递减到 0 以上会发生什么情况。有些口译员崩溃,有些缠绕。

最好始终假设解释器会崩溃。原因很简单。某些实现不会将磁带绑定到 30000 个单元,并且会在请求时立即继续添加内存。因此,磁带没有"结束",所以从 0 向下不能绕到结尾(因为没有一个)

这实际上取决于解释器。原始语言由 30,000 个存储单元组成的数组组成。如果单元格为零,许多人选择循环到最后一个单元格,以避免引发异常。

好吧,完全根据理论回答您的问题。

首先,你应该知道,大脑设计是图灵完备的。

Brainfuck的图灵完备性假设语言本身可以用来模拟任何单磁带图灵机

转机的定义假设无限胶带

无限的记忆是不可能得到的。为了假装磁带是无限的,您应该使用尽可能多的内存。

如果你的记忆已满,你应该抛出一个异常,因为一旦记忆是有限的,脑残就毫无意义了。

最新更新