万年历中的一个有关问题

万年历中的一个问题const char *ChDay[] {*,初一,初二,初三,初四,初五,初六,初七,初八

万年历中的一个问题
const char *ChDay[] = {"*","初一","初二","初三","初四","初五",
  "初六","初七","初八","初九","初十",
  "十一","十二","十三","十四","十五",
  "十六","十七","十八","十九","二十",
  "廿一","廿二","廿三","廿四","廿五", 
  "廿六","廿七","廿八","廿九","三十"};
ChMonth[(LunarCalendarDay & 0x3C0) >> 6
上边这句是什么意思?LunarCalendarDay是个整数,这时万年历中的一段代码.请问高手咋理解? 
问题补充:
为什么要LunarCalendarDay & 0x3C0 而且要 >>6?
麻烦讲详细点.谢谢!

[解决办法]
0x3C0 = 0000 0011 1100 0000

与上0x3C0 表示只关心上面1的部分,右移6位是为了清除掉后面的0

上面1的部分应该是索引。