VB.NET位移混淆

时间:2010-11-05 21:30:47

标签: vb.net binary bit-shift shift

我对VB.NET位移有一些疑问。我理解<< >>运算符是VB.NET中的位移运算符。

我有一个双字节十六进制值0x3ACC,这两个字节中的每一位代表一天,一个月或一年。此十六进制值的位结构为yyyy yyym mmmd dddd

我很困惑我应该如何改变这些值,以便年,月和日都在他们自己的UINT16值中。移位数应该是什么?我需要在移位中添加任何填充吗?

1 个答案:

答案 0 :(得分:1)

您将需要使用And以及位移操作来获得结果。您需要向右移动(计算金额的“非年”位)才能获得年份。为了得到这一天,只需And,其值设置为所有“日”位。提取月份需要结合使用这两种技术,And然后>>>>,然后And使用正确的掩码。


扰流板:

  • 提取年份:0x3ACC >> 9
  • 提取日期:0x3ACC And 0x001F
  • 提取月份:0x3ACC And 0x01E0 >> 5