如何设置此布尔值

时间:2014-04-02 10:44:38

标签: .net vb.net

我遇到过以下代码,并且不了解它。

Dim bTemp as boolean = False
Dim License as integer = 2066350014
bTemp = aAreaLicence(1) And License 

如果aAreaLicence(1) = 64,那么布尔值设置为false

如果aAreaLicence(1) = 16则布尔值设置为true

我不知道这里发生了什么,有人可以解释一下吗?

3 个答案:

答案 0 :(得分:4)

Numbers Licenses和aAreaLicence(1)转换为二进制,然后运行"和"在每一位执行。所以:

2066350014 (10) = 1111011001010011111111110111110 (2)
        64 (10) = 0000000000000000000000001000000 (2)
        16 (10) = 0000000000000000000000000010000 (2)

如果我们执行"和"操作:

1111011001010011111111110111110 
And
0000000000000000000000001000000 
=
0000000000000000000000000000000 - that means 2066350014 And 64 = false

1111011001010011111111110111110
And
0000000000000000000000000010000
=
0000000000000000000000000010000 - that means 2066350014 And 16 = true

答案 1 :(得分:2)

来自the Docs

和运营商

对两个布尔表达式执行逻辑连接,或对两个数值表达式执行按位连接

所以在你的情况下,你有一个按位连接。

64 And 2066350014 

在转换为布尔值时评估为0 False,因为它为零

16 And 2066350014 

在转换为布尔值时评估为16 True因为它是非零

答案 2 :(得分:1)

十进制到二进制:

  

2066350014 = 1111011001010011111111110111110

     

64 = 1000000

     

16 = 10000

然后使用布尔代数:

bTemp = aAreaLicence(1) And Licences = 64 AND 2066350014 = 0  = false

bTemp = aAreaLicence(1) And Licences = 16 AND 2066350014 = 16 = true