operator << in c#
我在c#中无法理解这段代码
int i=4 int[] s =new int [1<<i]; Console.WriteLine(s.length);
输出是16我不知道为什么输出那样?
位移算子
从文档
如果第一个操作数是int或uint(32位数),则移位计数由第二个操作数的低位5位给出。
如果第一个操作数是long或ulong(64位数量),则移位计数由第二个操作数的低位6位给出。
注意,i << 1和i << 33给出相同的结果,因为1和33具有相同的低位5位。
这将与2 ^( 低5位的实际值 )相同。
所以在你的情况下,它将是2 ^ 4 = 16 。
我假设你的意思是i
代替r
…
<
每个位向左移动n
位置,用0填充(在右侧)。 * =请注意,对于int
, n
实际上是“mod 32”,因此(作为角点情况)1 << 33 = 2,而不是0,这是您可能期望的。
还有>>
(右移),右移,用uint
s和+ ve int
s填充0
,用-ve int
s填充1
。
<<是左移算子
x << y
表示将x向左移位x。
3是0011,3 << 1是0110其中6。
它通常用于乘以2(向左移动乘以2)
如前所述,<<是左移算子。 在您的特定示例中,数组大小被定义为2的幂。值1左移一些数字将是1,2,4,8,16,...