這可能是一個基本問題,但我以前從未使用過這種語法。有人能詳細告訴我這個表達式是如何評估爲真的嗎? [假設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'這樣的按位運算符的工作原理。 –