C#中的&和|还有<<、>>是什么?

464 阅读1分钟

& 是做逻辑与运算
比如 1 & 1 = 1
2 & 1 = 0 (10 & 01 = 00)
|是坐逻辑或运算
1|1 = 1
2 | 1 = 3 (10 | 01 = 11)
\

是右移位运算 相等于除以2
<< 是左移位,相等于乘以2

<<(左移运算符):

该运算符为双目运算符,作用是把一个整型数所有位向左移动指定位数,移动到左边界外的多余二进制位丢弃,从右边界移入0。左移运算两个操作数为整数类型。第一个操作数是进行移位操作的数,第二个操作数指定第一个操作数移动位数。如果第二个操作数等于0则不发生任何移位。

(右移运算符):

在许多计算机编程语言(例如:C语言、C++语言、Java语言、JavaScript语言、Pascal语言等)中,“>>”代表右移运算符,就相当于“shr”。该运算符为双目运算符,结合方向为从左到右,作用是把一个整型数的所有位向右移动指定的位数,移动到右边界之外的多余二进制位会被丢弃,并从左边界移入一个二进制位,若原数的最高位为1,则移入的二进制位为1,否则为0。

右移运算的两个操作数应为整数类型。第一个操作数是要进行移位操作的数,第二个操作数指定第一个操作数移动的位数。如果第二个操作数等于0则不发生任何移位。