如果VB.NET中的varShort是Short并且varBit是0到15之间的值,那么如何设置varBit标识的varShort中的位而不会干扰varShort中的任何其他位?
我的问题当然是最高位,第15位。由于varBit是在运行时确定的,因此解决方案必须适用于任何位数。
答案 0 :(得分:1)
您可以使用bitshift运算符<<和>>打开您想要的位(并将此值放在varValue
中),然后按位或{{1} }和varShort
在this question中有关于VB.NET中的bitshift操作符的信息
答案 1 :(得分:1)
设置Short
的第16位会导致溢出异常,因为Short是signed类型。您有任何理由不使用未签名的对应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