VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > 简明python教程 >
  • [史上最全]C#(VB.NET)中位运算符工作过程剖析(译)(2)

C#和VB.NET中的右移运算符的使用,参见下面代码:

[C#]

[VB.NET]

使用右移运算符计算x/(2的幂)

x>>n的值等于x/(2的n次方),比如8>>2的值为8/(2的2次方),也就是8/4。

[C#]

[VB.NET]

当然,这种方式的计算速度也要高于8/Math.Pow(2,2);

[C#]

[VB.NET]

 

循环按位移动

循环按位左移

循环按位左移会将数值的二进制格式中的每位均向左移动1个位置,然后将移出来的数值(1或0)替补到右边空白处。

上图显示了将154循环按位向左移动1位,它的值等于154<<1|154>>7。循环按位左移得到的结果可以归纳为:a<<n|a>>(b-n)。b为数值的位数,如果数值为Byte类型,那么最后的结果为a<<n|a>>(8-n),如果数值为Int32类型,那么b为32,最后的结果为a<<n|a>>(32-n)。

C#和VB.NET中循环按位左移的使用,可以参见下面:

[C#]

[VB.NET]

循环按位右移

循环按位右移会将数值的二进制格式的每位均向右移动1个位置,然后将移出来的数值(1或0)替补到左边空白处。

如上图所示,将155循环按位右移1个位置,最后它的值等于155>>1|155<<7。循环按位右移得到的结果可以归纳为:a>>n|a<<(b-n)。其中b为数值位数。如果数值为Byte类型,那么结果为a>>n|a<<(8-n),如果数值为Int32类型,那么得到的结果为a>>n|a<<(32-n)。

C#和VB.NET中循环按位右移的使用,可以参见下面代码:

[C#]

[VB.NET]

译者注:在使用位操作符时,一定要先确定被操作的数值是什么类型,占多少位,同一个数值,数据类型不同,最后得到的结果不一样。原文中,对于任何一个数值(比如52),都在强调它是Byte类型还是Int16类型。

作者:周见智
出处:http://www.cnblogs.com/xiaozhi_5638/



相关教程
          
关于我们--广告服务--免责声明--本站帮助-友情链接--版权声明--联系我们       黑ICP备07002182号