如果VB.NET中的varShort是Short並且varBit是一個從0到15的值,那麼我怎樣才能設置varBit所標識的varShort中的位而不干擾其中的任何其他位varShort?如何在Short中設置任何一個位
我的問題當然是最重要的位15位。由於varBit是在運行時確定的,因此解決方案必須使用任何位數。
如果VB.NET中的varShort是Short並且varBit是一個從0到15的值,那麼我怎樣才能設置varBit所標識的varShort中的位而不干擾其中的任何其他位varShort?如何在Short中設置任何一個位
我的問題當然是最重要的位15位。由於varBit是在運行時確定的,因此解決方案必須使用任何位數。
您可以使用位移操作符,<<和>>,把你想要的位(在varValue
把這個值),然後按位或varShort
和varValue
有信息this question關於位位移VB.NET中的運算符
設置Short
的第16位將導致溢出異常,因爲Short是signed類型。你有什麼理由不使用未簽名的對方UShort?
編輯
如果你真的想堅持Short
,此功能將設置第十六位:
Function setNthBit(ByVal number As Short, ByVal bit As Short) As Short
Dim mask As UShort
mask = 2^bit
If mask > Short.MaxValue Then
Return (Short.MinValue + number) Or mask
Else
Return number Or mask
End If
End Function
我的第三方軟件需要Short數據類型。感謝您的答案的細節。 – John 2011-04-28 17:48:54
這不能用嚴格開啓編譯:***錯誤 Option Strict On不允許從'Double'到'Integer'***(帶有「mask = 2^bit」的行)的隱式轉換。 – 2015-09-29 12:44:41
是的,我認爲這是最簡單的。謝謝。 – John 2011-04-28 17:49:24