今天写一个比较有意思的东西 -- C#移位运算(左移和右移)。
C#是用<<(左移) 和 >>(右移) 运算符是用来执行移位运算。
左移 (<<)
将第一个操作数向左移动第二个操作数指定的位数,空出的位置补0。
左移相当于乘.左移一位相当于乘2;左移两位相当于乘4;左移三位相当于乘8。
x<<1= x*2
x<<2= x*4
x<<3= x*8
x<<4= x*16
同理,右移即相反:
右移 (>>)
将第一个操作数向右移动第二个操作数所指定的位数,空出的位置补0。
右移相当于整除.右移一位相当于除以2;右移两位相当于除以4;右移三位相当于除以8。
x>>1= x/2
x>>2= x/4
x>>3= x/8
x>>4=x/16
当声明重载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);
}
}
}
以上表达式,输出结果是:
因为位移比乘除速度快.对效率要求高,而且满足2的幂次方的乘除运方,可以采用位移的方式进行。
比较有意思吧?
分享到:
相关推荐
C#109左移右移SelectedItems 源代码
0、逻辑运算符 1、位逻辑非运算 2、位逻辑与运算 4、位逻辑异或运算 5、位左移运算 6、位右移运算
C#算术运算的例子
c++和C#中,运算符‘%’为取余运算符,而并非取模预算符,在一些应用场景中,如果不加以区分,会产生严重的bug。
可用于定义矩阵,并进行常用的矩阵运算
C#算术运算的一些例子C#算术运算的一些例子C#算术运算的一些例子C#算术运算的一些例子
C# 矩阵 各种运算 有,求逆,求行列式的值,矩阵的加减乘除
C#源代码动态演示了矩阵的各种运算,可以动态生成各种大小的矩阵,运算结果保存到文本文件中.
c#矩阵运算,包括一些数学是运算和所有的矩阵运算求秩等
C#矩阵乘法运算静态方法并在Main函数中测试
实现四则运算,窗体上有三个文本框用来输入运算数和输出结果,一个组合框用于输入运算符或选择运算符。一个按钮用于计算。 并做文本框的TextChanged事件的试验、KeyDown事件的试验。
此类是用C#语言编写,支持复数的基本运算
C#矩阵运算演示程序,很适合图形开发者参考学习。
自定义向量类定义和向量四则运算,包括点乘和叉乘。可以实现不规则图形面积计算。带测试例子,已自己测试通过
一个简单的移位加密解密器,用C#实现。很好用
C#程序设计类的继承复数运算,包含复数的加法减法乘法除法的窗体程序
C#分数运算
C#数学运算表达式解释器,参考:http://blog.csdn.net/testcs_dn/article/details/37776937
输出:1 2 3 4 5 6 2 3 4 5 6 1 3 4 5 6 1 2 4 5 6 1 2 3 5 6 1 2 3 4 6 1 2 3 4 5
该文件中包含了各种数组运算,都是用C#语言编写,有矩阵的转置;求逆矩阵;两个矩阵相乘,相加,相减;构造单位对角矩阵;矩阵否相等;托伯利兹矩阵求逆的埃兰特方法;求行列式值的全选主元高斯消去法;求矩阵秩的...