<<是二进制运算符不是操作符,是用来执行向做移若干位的操作。
右移运算符 (>>) 将第一个操作数向右移动第二个操作数所指定的位数。
备注
如果第一个操作数为 int 或 uint(32 位数),则移位数由第二个操作数的低五位给出(第二个操作数 & 0x1f)。
如果第一个操作数为 long 或 ulong(64 位数),则移位数由第二个操作数的低六位给出(第二个操作数 & 0x3f)。
如果第一个操作数为 int 或 long,则右移位是算术移位(高序空位设置为符号位)。如果第一个操作数为 uint 或 ulong 类型,则右移位是逻辑移位(高位填充 0)。
用户定义的类型可重载 >> 运算符;第一个操作数的类型必须为用户定义的类型,第二个操作数的类型必须为 int。有关更多信息,请参见 operator。重载二元运算符时,也会隐式重载相应的赋值运算符(如果有)。
重载操作符是为了在使用该类时执行操作符的操作。以下为重载>操作符和<<运算符,并在调用时使用操作符进行判断的例子。
public class Class2
{
public int iValue;
public static bool operator >(Class2 c1, Class2 c2)
{
return (c1.iValue > c2.iValue);
}
public static Class2 operator <<(Class2 c1, Class2 c2)
{
return (c1.iValue << c2.iValue);
}
}
public class Class3
{
public void showDiff()
{
Class2 cl1=new Class2();
Class2 cl2=new Class2();
cl1.iValue = 5;
cl2.iValue = 10;
if (cl1 > cl2)
{
//
}
Console.WriteLine((cl1<<3).iValue);
}
}
Ps:不好意思,我还以为C#不能二进制运算符呢,查了一下发现可以。
参考资料:http://msdn.microsoft.com/zh-cn/vs2008/ms228498.aspx