MSDN的解释没看懂右移运算符 (>>) 将第一个操作数向右移动第二个操作数所指定的位数。//第二个操作数是小数也可以?如果第一个操作数为 int 或 uint(32 位数),则移位数由第二个操作数的低五位给出(第二个操作数 & 0x1f)如果第一个操作数为 long 或 ulong(64 位数),则移位数由第二个操作数的低六位给出(第二个操作数 & 0x3f)。如果第一个操作数为 int 或 long,则右移位是算术移位(高序空位设置为符号位)。如果第一个操作数为 uint 或 ulong 类型,则右移位是逻辑移位(高位填充 0)。*************************************************************************左移运算符 (<<) 将第一个操作数向左移动第二个操作数指定的位数。第二个操作数的类型必须是 int。如果第一个操作数是 int 或 uint(32 位数),则移位数由第二个操作数的低 5 位给出。如果第一个操作数是 long 或 ulong(64 位数),则移位数由第二个操作数的低 6 位给出。第一个操作数的高序位被放弃,低序空位用 0 填充。移位操作从不导致溢出。红色的地方都没看懂  哪位有爱心的哥 给我说说 详细点

解决方案 »

  1.   

    对整型运算对象按位进行逻辑运算。按位进行逻辑运算的意义是:依次取被运算对象的每个位,进行逻辑运算,每个位的逻辑运算结果是结果值的每个位。
    int e=6<<3;
    Console.WriteLine("e={0}",e);
    //6的二进制是00000110,左移三位后等于00101000,即48
    long lg = 1;
    Console.WriteLine("0x{0:x}", lg << 33);
    输出:
    0x200000000
      

  2.   

    右移运算符 (>>) 将第一个操作数向右移动第二个操作数所指定的位数。//第二个操作数是小数也可以?不可以对于int(32位),最多只能执行>>31,低五位,就是如果int>>35 ,那么取35的低五位执行即:x>>35 等效于x>>(35 & 0x1f) ,等价于除以32的余数int64,和int62类似,最多只能执行>>63,等价于除64的余数int和int64移位时,作为符号的最高位保留,移位后,数字的符号不变uint和ulong移位时,不考虑符号(本身无符号,它的最高位也代表数字)
      

  3.   

    左移右移操作。
    很简单。任何数字在计算机中都是二进制保存。比如
    1用一个字节byte表示。就是
    0000 0001
    如果左移,就是把1往左移动一个成为
    0000 0010
    左右移就是相对二进制说的。
    没很复杂,只要注意一点,有符号的左移后,原位置补充为1.无符号数左移后原位置填充0.右移都相同。