【问题标题】:operator << in c# [duplicate]C#中的运算符<< [重复]
【发布时间】:2009-12-25 19:50:10
【问题描述】:

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

int i=4 
int[] s =new int [1<<i]; 
Console.WriteLine(s.length); 

输出为 16 我不知道为什么会这样输出?

【问题讨论】:

    标签: c# operators


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      来自文档

      如果第一个操作数是 int 或 uint (32位数量),移位计数为 由低五位给出 第二个操作数。

      如果第一个操作数是 long 或 ulong (64位数量),移位计数为 由低六位给出 第二个操作数。

      注意 i

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

      所以在你的情况下,它会是 2^4=16

      【讨论】:

        【解决方案3】:

        我假设您的意思是 i 代替 r...

        &lt;&lt;n 表示“左移 n* 位”。由于您从 1=binary 00...00001 开始,如果您向左移动 4 次,您将得到二进制 00...10000 = 16(如果您熟悉二进制算术,这会有所帮助 - 否则“calc.exe”有一个二进制转换器)。

        每个位向左移动n 位置,用 0 填充(在右侧)。 *=请注意,n 实际上是 int 的“mod 32”,因此(作为极端情况)1

        还有&gt;&gt;(右移),它向右移动,用0 填充uints 和+ve ints,1 填充-ve ints。

        【讨论】:

          【解决方案4】:

          x << y
          

          表示将 x 向左移动 y 位。

          3 是 0011,3

          一般用来乘2(左移就是乘2)

          【讨论】:

            【解决方案5】:

            如前所述,

            【讨论】:

              猜你喜欢
              • 2011-12-24
              • 1970-01-01
              • 2012-02-02
              • 1970-01-01
              • 1970-01-01
              • 2016-06-27
              • 1970-01-01
              • 2016-05-02
              • 1970-01-01
              相关资源
              最近更新 更多