operator << in c#

kht*_*aby 4 c# operators

我无法理解c#中的这段代码

int i=4 
int[] s =new int [1<<i]; 
Console.WriteLine(s.length); 
Run Code Online (Sandbox Code Playgroud)

输出是16我不知道为什么输出那样?

Adr*_*der 5

从文档

如果第一个操作数是int或uint(32位数量),则移位计数由第二个操作数的低位5位给出.

如果第一个操作数是long或ulong(64位数量),则移位计数由第二个操作数的低位6位给出.

注意,i << 1和i << 33给出相同的结果,因为1和33具有相同的低阶5位.

这与2 ^(低5位的实际值)相同.

所以在你的情况下它将是2 ^ 4 = 16.