位运算符<<和>>的解析

因为<<和>>除了一左一右外,别的都是一样的,故只需用其中一个作说明

<<是二元操作符,<<是将第一个操作数按照第二个操作数指定的位数向左移动,第二个操作数的类型必须是一个int或具有向int的预定义隐式数值转换的类型

当声明重载C#移位运算符时,第一个操作数的类型必须总是包含运算符声明的类或结构,并且第二个操作数的类型必须总是 int

class Program
{
staticvoid Main(string[] args)
{
ShiftClass shift1
=new ShiftClass(5,10);
ShiftClass shift2
= shift1<<2;
ShiftClass shift3
= shift1>>2;

Console.WriteLine(
"{0} << 2 结果是:{1}", shift1.valA, shift2.valA);
Console.WriteLine(
"{0} << 2 结果是:{1}", shift1.valB,shift2.valB);
Console.WriteLine(
"{0} >> 2 结果是:{1}", shift1.valA, shift3.valA);
Console.WriteLine(
"{0} >> 2 结果是:{1}", shift1.valB, shift3.valB);

Console.ReadLine();
}

publicclass ShiftClass
{
publicint valA;
publicint valB;

public ShiftClass(int valA, int valB)
{
this.valA= valA;
this.valB= valB;
}

publicstatic ShiftClassoperator<<(ShiftClass shift,int count)
{
int a= shift.valA<< count;
int b= shift.valB<< count;
returnnew ShiftClass(a, b);
}

publicstatic ShiftClassoperator>>(ShiftClass shift,int count)
{
int a= shift.valA>> count;
int b= shift.valB>> count;
returnnew ShiftClass(a, b);
}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值