c#位移运算符"<<" ">>"

左移运算符(<<)
将第一个操作数向左移动第二个操作数指定的位数,空出的位置补0。例如:1100100<<2=110010000,1100100左移两位后为 1100100口口,补0后为110010000。

右移运算符(<<)
将第一个操作数向右移动第二个操作数所指定的位数,空出的位置补0。例如:1100100>>2=0011001,1100100右移两位后为 口口11001,补0后为0011001。

比较有意思的东西
10进制中左移一位相当于是添加一个0,即扩大了10的一次方倍,左移两位则是添加两个0,即扩大了10的二次方倍;同理,2进制左移一位也是添加了一个0,即扩大了2的一次方倍,左移两位则是添加两个0,扩大了2的二次方倍,那么就有下边的关系:

n<<1,相当于 n*2
n<<2,相当于 n*4
n<<3,相当于 n*8
n<<4,相当于 n*16

同理,右移则表述为:

n>>1,相当于 n/2
n>>2,相当于 n/4
n>>3,相当于 n/8
n>>4,相当于 n/16

以上原文来自 http://www.cnblogs.com/mikechang/archive/2010/01/25/1655904.html

 

/************************************华丽丽的分界线********************************************/

C#运算符 “&”

& 计算操作数的逻辑按位“与”。对于 bool 操作数,& 计算操作数的逻辑“与”;也就是说,当且仅当两个操作数均为 true 时,结果才为 true

 

例如:

0xf8 & 0x3f     得出结果为0x38

计算步骤

 0xf8的二进制为11111000

0x3f的二进制为00111111

两个相&后    为00111000  转为十六进制为 0x38

【1&1=1      1&0=0         0&0=0】

此&理解仅为个人理解 若有错 欢迎提出 但请勿批....

posted @ 2012-08-17 15:18  失落情怀  阅读(395)  评论(0编辑  收藏  举报