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】
此&理解仅为个人理解 若有错 欢迎提出 但请勿批....