我遇到过以下代码,并且不了解它。
Dim bTemp as boolean = False
Dim License as integer = 2066350014
bTemp = aAreaLicence(1) And License
如果aAreaLicence(1) = 64
,那么布尔值设置为false
如果aAreaLicence(1) = 16
则布尔值设置为true
我不知道这里发生了什么,有人可以解释一下吗?
答案 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