关于按位运算符:这是什么样的BASIC?

What kind of BASIC is this?

我完全预料到投票会被否决,但这让我很好奇,我希望至少有人能回答。我们的离散数学教授非常喜欢使用老语言,因为它们提供了大量的位运算符。现在,他给了我们一个家庭作业,用来确定以下基本陈述的输出:

1
PRINT (NOT (15 OR 51) EQV 85) IMP (15 AND 51)

我已经解决了它,我非常确定它应该输出-105,但我想编译它只是为了确保。然后我发现我正面临一个问题。我不知道这是什么基础!原始基本语言的编译器未能编译它。QBasic编译器未能编译它。一个vb.net编译器未能编译它,即使在我将它修改为我认为应该是vb.net的语法之后,仍然如此:

1
Console.WriteLine((NOT (15 OR 51) EQV 85) IMP (15 AND 51))

问题是:是否有一种基本的分类或方言,在这种语言中,一个程序可以编译这种语句?如果是,哪一个?


这在"原始"的Microsoft Visual Basic中有效。vb.net版本不完全兼容。

最简单的方法是使用Visual Basic for Applications,您可以在Microsoft Office中找到它。实际上,表达式的计算结果是-105。我用Excel编写了以下代码:

1
Cells(1, 1).Value = (NOT (15 OR 51) EQV 85) IMP (15 AND 51)

可能还有其他一些基本的方言可以很好地工作-PowerBasic可能是其中之一,但我不能真正检查:)

在不知道老师的背景的情况下,辨别准确的方言是很困难的——有很多这样的方言,很多都非常相似。


也许您的教授以这种形式专门提供了这个问题,作为一个挑战来分析解决它,而不是通过将代码输入编译器。这不是一个复杂的表达。

均无EQV也不是小鬼已经支持基本功能了(MS总是向后兼容!).

要验证您的答案,您应该使用函数定义并手动解决它。

如果不能做到这一点,有趣的是,它仍然在VBA中得到支持。您可以在大多数MS Office套件应用程序中找到隐藏的VBA。


对我来说,这似乎是一个VBA语法。

可能您可以在MS Excel宏中试用它。

1
2
3
4
5
SUB VBA_Function()
    DIM x
    x = (NOT (15 OR 51) EQV 85) IMP (15 AND 51)
    Range("A1").Value = x
END SUB

因此,从方程中去掉eqv和imp,并将其建立回:

1
2
3
4
5
6
7
REM modify boolean values:

PRINT (NOT (15 OR 51) EQV 85) IMP (15 AND 51)

REM removing EQV AND IMP:

PRINT NOT (NOT (NOT (15 OR 51) XOR 85) AND NOT (15 AND 51))

解决你的问题。


其他布尔真值表:

1
2
3
4
5
6
7
8
Where NOR IS NOT OR, NON IS NOT IMP, XAN IS NOT AND

      X |  Y  |  Nor        X |  Y  |  Non        X |  Y  |  Xan
  ------------------    ------------------    ------------------
     -1 | -1  |   0        -1 | -1  |   0        -1 | -1  |   0
     -1 |  0  |   0        -1 |  0  |  -1        -1 |  0  |  -1
     0 | -1  |   0         0 | -1  |   0         0 | -1  |  -1
     0 |  0  |  -1         0 |  0  |   0         0 |  0  |  -1

基本布尔真值表示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
X EQV Y  Computes NOT XOR
X IMP Y  Computes NOT(x AND NOT y)

  Boolean truth tables:

      X | NOT               X |  Y  |  OR         X |  Y  |  AND
  -----------           -----------------     ------------------
     1 |  0                1 |  1  |  1          1 |  1  |   1
     0 |  1                1 |  0  |  1          1 |  0  |   0
                           0 |  1  |  1          0 |  1  |   0
                           0 |  0  |  0          0 |  0  |   0

      X |  Y  |  XOR        X |  Y  |  IMP        X |  Y  |  EQV
  ------------------    ------------------    ------------------
     1 |  1  |   0         1 |  1  |   1         1 |  1  |   1
     1 |  0  |   1         1 |  0  |   0         1 |  0  |   0
     0 |  1  |   1         0 |  1  |   1         0 |  1  |   0
     0 |  0  |   0         0 |  0  |   1         0 |  0  |   1