static boolean won[] = new boolean[1 < < 9];
static final int DONE = (1 < < 9) - 1;
won[]、DONE的初值该怎样理解?
------解决方案--------------------
int tmp = 1 < <9 = 1000000000(2)=2^9
然后new一个数组boolean won[] = new boolean[tmp]
后面那个就是一个int而已
------解决方案--------------------
static boolean won[] = new boolean[1 < < 9]; 先计算出要分配的长度1 < < 9,然后再分配。1 < < 9是指把1的二进制码实现左移9位,左移一位,相当于乘上2, 即为1 × 2的9次方,结果为512, 因为2的10次方为1024.
static final int DONE = (1 < < 9) - 1;跟上面差不多,先把1左移9位,结果减1,然后赋值给DONE.
------解决方案--------------------
“ < <”是移位操作符
用来操作2进制数的,
1 < <9就是将1的二进制数左移9位
本来1的二进制表示为0000000001
左移9位变为1000000000
就是1楼说的2的9次方
第二个同理