C# 移位运算符
2016-06-30 10:51
483 查看
int result1= 66 << 1;//正数的左移位运算规则,左移一位乘以2,右移移位除以2 左移两位乘以4,三位乘以8,4位乘以16,右移则相反; int result2 = -66<< 1; //负数的移位运算在最高位补1;运算规则和正数一样 Console.WriteLine("正数移位"+result1+"............"+"负数移位"+result2);
当声明重载C#移位运算符时,第一个操作数的类型必须总是包含运算符声明的类或结构,并且第二个操作数的类型必须总是 int,如:
class Program { static void 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(); } public class ShiftClass { public int valA; public int valB; public ShiftClass(int valA, int valB) { this.valA = valA; this.valB = valB; } public static ShiftClass operator <<(ShiftClass shift, int count) { int a = shift.valA << count; int b = shift.valB << count; return new ShiftClass(a, b); } public static ShiftClass operator >>(ShiftClass shift, int count) { int a = shift.valA >> count; int b = shift.valB >> count; return new ShiftClass(a, b); } } }
相关文章推荐
- 17 C#中的循环执行 while循环
- C#本地时间和GMT(UTC)时间的转换
- c# winform 显示动态gif图片的方法
- C#开源项目大全
- c#unicode转中文
- c#中文转unicode
- C#强制关闭进程
- C#生成随机字符串
- c#工作线程中去更新界面显示
- C#通过创建Windows服务启动程序的方法详解
- C# XML配置文件读写类(用于程序配置保存)
- C#设置软件开机自动运行的方法(修改注册表)
- c# 写的一个xml配置工具,自我感觉很强大(wpf)
- 展望C# 7
- Mads Torgersen介绍C# 7及后续版本新特性
- C#分析搜索引擎URL得到搜索关键字,并判断页面停留时间以及来源页面
- C#中char类型与string类型的相互转换
- c#
- C#调试快捷键
- C#.NET日期时间取得方法