gpt4 book ai didi

logical-operators - 如何在 ZX Spectrum basic 中模拟逻辑异或?

转载 作者:行者123 更新时间:2023-12-03 23:29:22 25 4
gpt4 key购买 nike

有时在 ZX Spectrum Basic 中编码时,我需要评估由两个操作数和一个逻辑异或组成的逻辑表达式,如下所示:

IF (left operand) xor (right operand) THEN

由于 ZX Basic 只知道 NOT、OR 和 AND,我不得不求助于某种奇特的计算,其中包括左/右操作数的多次使用。这很尴尬,因为它消耗时间和内存,如果您在 8 位机器上工作,这两者都是稀疏的。我想知道是否有一个巧妙的技巧来模仿 xor 运算符。

为了测试结果,我提供了一个小代码示例:
 5 DEF FN x(a,b)=(a ??? b) : REM the xor formula, change here
10 FOR a=-1 TO 1 : REM left operand
20 FOR b=-1 TO 1 : REM right operand
30 LET r=FN x(a,b) : REM compute xor
40 PRINT "a:";a;" b:";b;" => ";r
50 NEXT b
60 NEXT a

你能帮我找到一个高性能的解决方案吗?到目前为止,我尝试过 DEF FN x(a,b)=(a AND NOT b) OR (b AND NOT a)但它有点笨拙。

编辑:

如果您想测试您的想法,我建议您使用 BasinC v1.69 ZX 模拟器(仅限 Windows)。

正如@Jeff 指出的那样,大多数基础知识(例如 ZX one's)确实将零值视为假,将非零值视为真。

我已经调整了样本以使用各种非零值进行测试。

最佳答案

逻辑异或在语义上等同于不相等。

IF (left operand) <> (right operand) THEN

应该管用。

编辑:在整数操作数的情况下,您可以使用
IF ((left operand) <> 0) <> ((right operand) <> 0) THEN

关于logical-operators - 如何在 ZX Spectrum basic 中模拟逻辑异或?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46097574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com