2010-11-05 6 views
0

У меня есть некоторые вопросы относительно смещения битов VB.NET. Я понимаю, что операторы << >> являются операторами сдвига битов в VB.NET.Ошибка смещения бит VB.NET

У меня есть двухбайтовое шестнадцатеричное значение, 0x3ACC, и каждый бит в этих двух байтах представляет собой день, месяц или год. Битовая структура этого шестнадцатеричного значения равна yyyy yyym mmmd dddd.

Я смущен относительно того, как я должен смещать эти значения так, чтобы год, месяц и день находились в их собственных значениях UINT16. Какими должны быть переменные числа и нужно ли мне добавлять какие-либо дополнения к сдвигу?

ответ

1

Вам понадобится использовать And, а также операции смещения бит, чтобы получить результат. Вам нужно сдвинуть вправо (подсчитать «не годовые» биты для суммы), чтобы получить только год. Чтобы получить день, просто And со значением, которое содержит все бит дня. Для извлечения месяца потребуется комбинация двух методов: And ing, затем >> или >>, а затем And ing с правильной маской.


Спойлеры:

  • Чтобы извлечь год: 0x3ACC >> 9
  • Чтобы извлечь день: 0x3ACC And 0x001F
  • Чтобы извлечь месяц: 0x3ACC And 0x01E0 >> 5
+0

Спасибо, что помогла мне так много! Теперь я полностью понимаю. – WizardsSleeve