如何设置 Short 中的任何单个位
如果 VB.NET 中的 varShort 是 Short,并且 varBit 是 0 到 15 之间的值,那么如何设置 varShort 中由 varBit 标识的位,而不干扰 varShort 中的任何其他位?
当然,我的问题是最高有效位,即位 15。由于 varBit 是在运行时确定的,因此该解决方案必须适用于任何位数。
If varShort in VB.NET is a Short and varBit is a value from 0 to 15, how can I set the bit in varShort identified by varBit without disturbing any of the other bits in varShort?
My problem, of course, is with the most significant bit, bit 15. Since varBit is determined at runtime, the solution must work with any bit number.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用位移运算符 << ; 和 >>> ,打开你想要的位(并将这个值放入
varValue
中),然后按位或varShort
和varValue
那里这个问题中提供了有关 VB.NET 中位移运算符的信息
You can use the bitshift operators, << and >>, to turn on the bit you want (and put this value in
varValue
), and then bitwise OrvarShort
andvarValue
There is information in this question about the bitshift operators in VB.NET
设置
Short
的第十六位将导致溢出异常,因为 Short 是一种签名类型。您是否有任何理由不使用未签名的对应 UShort?编辑
如果您确实想坚持使用
Short
,此函数将设置第十六位:Setting the sixteenth bit of a
Short
will cause an overflow exception because Short is a signed type. Do you have any reason not to use the unsigned counterpart UShort?Edit
If you really want to stick with
Short
, this function will set the sixteenth bit: