如何在Short中设置任何单个位

时间:2011-04-28 16:28:42

标签: vb.net types bit-manipulation

如果VB.NET中的varShort是Short并且varBit是0到15之间的值,那么如何设置varBit标识的varShort中的位而不会干扰varShort中的任何其他位?

我的问题当然是最高位,第15位。由于varBit是在运行时确定的,因此解决方案必须适用于任何位数。

2 个答案:

答案 0 :(得分:1)

您可以使用bitshift运算符<<>>打开您想要的位(并将此值放在varValue中),然后按位或{{1} }和varShort

this question中有关于VB.NET中的bitshift操作符的信息

答案 1 :(得分:1)

设置Short的第16位会导致溢出异常,因为Shortsigned类型。您有任何理由不使用未签名的对应UShort吗?

修改

如果你真的想坚持使用Short,这个函数将设置第16位:

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