这可能是一个基本问题,但我以前从未使用过这种语法。有人能详细告诉我这个表达式是如何评估为真的吗? [假设IsOdd是一个布尔类型]谢谢。为什么“(奇数和1)= 1”评估为真?
Dim i As Integer = 3
IsOdd = (i And 1) = 1
这可能是一个基本问题,但我以前从未使用过这种语法。有人能详细告诉我这个表达式是如何评估为真的吗? [假设IsOdd是一个布尔类型]谢谢。为什么“(奇数和1)= 1”评估为真?
Dim i As Integer = 3
IsOdd = (i And 1) = 1
因为您在语句末尾赋值1。
这是不正确的(参见marc的回答) –
And
运算符执行布尔AND
操作;如果将低位(1)设置为要比较的值(i
),则该数字为奇数。
尝试这样:
Dim i As Integer = 3
Dim IsOdd As Integer
If (i And 1) Then
IsOdd = True
Else
IsOdd = False
End If
希望它能帮助。
感谢您的回答。那么如何确定一个二进制数是否将评估为001?例如,例如,这个表达式如何处理数字4?我是否必须对二进制数有透彻的理解才能理解这一点? –
考虑到1的值可以表示为最终的0和1的无限序列。所有那些受任何位值(0或1)影响的零将总是给出0,因为“0和0 = 0”以及“0和1 = 0”。所以只有最后一点是重要的。如果你想确认,你可以进行彻底的测试,但是这一行代码有效地确定了这个数字是否是奇数。 –
另一个例子:考虑小数点'204和170'。在二进制中,这是'11001100和10101010'。如果两个数都是1,那么得到1,如果其中任何一个为0,则得到0,所以得到10001000.在十进制中,这是88的结果。因此'204和170 = 88'。这就是像'And','Or','Xor'和'Not'这样的按位运算符的工作原理。 –