这个逻辑是什么? [long] =([long]和[long])或[Long]

时间:2014-11-10 21:22:20

标签: vb.net vba logic logical-operators

如果这是一个非常基本的逻辑问题,我很抱歉,但是我在一个例子中看到了一些代码而且我不理解逻辑结构,所以我希望有人可以向我解释。

在我的示例中,我只使用[Long]作为任何Long数据类型对象的表示


示例如下:
注意:wHi,wLow,LoLo,HiLo,LoHI和HiHI都是长变量。

    If (wHi And &H8000&) Then
        MAKELONG = (((wHi And &H7FFF&) * 65536) Or (wLow And &HFFFF&)) Or &H80000000
    Else
        MAKELONG = LoLO Or (&H10000 * LoHI)
        'MAKELONG = ((wHi * 65535) + wLow)
    End If

我不确定此处测试的条件是什么:if [long] and [long] thenif [long] or [long] then

我也不理解返回逻辑,例如:[LONG] = ([LONG] And [LONG]) or [LONG]


我尝试在即时窗口玩游戏,并没有对我有任何启发,因为我没有看到任何明显的模式:

?1 or 10
 11 
?2 or 10
 10 
?3 or 10
 11 
?4 or 10
 14 
? 1 and 10
 0 
?2 and 10
 2 
?3 and 10
 2 
?4 and 10
 0 
?5 and 10
 0 

1 个答案:

答案 0 :(得分:1)

它有点掩盖。例如使用您的测试值:

    ?1 or 10 -> 11

      00000001 = binary for 1
      00001010 = binary for 10
   OR --------
      00001011 = binary for 11