int ThisZoom = 1 << zoom;//zoom为int型上面语句的<<是什么意思?

解决方案 »

  1.   

    抄段msdn的说明:
    左移位运算符 (<<) 根据第二个操作数指定的位数将第一个操作数向左移位。expr << count
    其中: expr 
    类型为 int、uint、long、或 ulong 的表达式;要移位的值。 
    count 
    类型为 int 的表达式;移位数。 
    备注
    如果 expr 为 int 或 uint(32 位数),则移位数由 count 的低 5 位 (count & 0x1f) 给定。如果 expr 为 long 或 ulong(64 位数),则移位数由 count 的低 6 位 (count & 0x3f) 给定。放弃 expr 的高序位,用 0 填充低序空位。移位操作从不导致溢出。用户定义的类型可重载 << 运算符(请参见 operator);第一个操作数的类型必须为用户定义的类型,第二个操作数的类型必须为 int。示例
    // cs_operator_left_shift.cs
    using System;
    class Test 
    {
       public static void Main() 
       {
          int i = 1;
          long lg = 1;
          Console.WriteLine("0x{0:x}", i << 1);
          Console.WriteLine("0x{0:x}", i << 33);
          Console.WriteLine("0x{0:x}", lg << 33);
       }
    }
    输出
    0x2
    0x2
    0x200000000
    请注意,i<<1 和 i<<33 给出相同的结果,因为 1 和 33 低序的 5 个位相同。