2011-04-28 39 views
1

如果VB.NET中的varShort是Short並且varBit是一個從0到15的值,那麼我怎樣才能設置varBit所標識的varShort中的位而不干擾其中的任何其他位varShort?如何在Short中設置任何一個位

我的問題當然是最重要的位15位。由於varBit是在運行時確定的,因此解決方案必須使用任何位數。

回答

1

您可以使用位移操作符,<<>>,把你想要的位(在varValue把這個值),然後按位或varShortvarValue

有信息this question關於位位移VB.NET中的運算符

+0

是的,我認爲這是最簡單的。謝謝。 – John 2011-04-28 17:49:24

1

設置Short的第16位將導致溢出異常,因爲Shortsigned類型。你有什麼理由不使用未簽名的對方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 
+0

我的第三方軟件需要Short數據類型。感謝您的答案的細節。 – John 2011-04-28 17:48:54

+0

這不能用嚴格開啓編譯:***錯誤 Option Strict On不允許從'Double'到'Integer'***(帶有「mask = 2^bit」的行)的隱式轉換。 – 2015-09-29 12:44:41

相關問題