Путаница в битах сдвига VB.NET - PullRequest
0 голосов
/ 06 ноября 2010

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

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

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

1 Ответ

1 голос
/ 06 ноября 2010

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

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