// extract a 2-bit number from a block entry
int NUM(int x, int y) { return 3 & block[p][x] >> y; }
不太理解NUM函数的运算顺序;
>>优先级大于&,因此是block[p][x] >> y的结果再和3取&,最后返回和3&的这个值
关于优先级,你直接百度运算符优先级就能查看了