对代码int code[8][1<<8]详解
在ACM/ICPC World Finals 1991中有一段代码:
……
int code[8][1<<8];
int readcodes(){……}
……
- 1<<8是位操作,是将1左移8位,相当于:
\[1*2^8=256
\]
也就是int code[8][256]
;
因为在程序中,是将十进制先转换为了二进制;
下面还有一段代码:
int len = readint(3);
int v=readint(len);//读取二进制代码,并且转换为int类型
……
if(v == (1 << len) - 1) break;
putchar(code[len][v]];
……
-
len
从2开始到7,则(1<<len)-1
:- 3 --->2 11
- 7 --->3 111
- 15 --->4 1111
- 31 --->5 11111
…………