移位运算符
x>>=y 等价于x=x>>y
-----下面是一些说明----
当声明重载C#移位运算符时,第一个操作数的类型必须总是包含运算符声明的类或结构,并且第二个操作数的类型必须总是 int。
下面列出了预定义的移位运算符。
C#移位运算符之左移位:
int operator <<(int x, int count); uint operator <<(uint x, int count); long operator <<(long x, int count); ulong operator <<(ulong x, int count); << 运算符将 x 向左位移若干个位,具体计算方法如下所述。
放弃 x 中经移位后会超出结果类型范围的那些高序位,将其余的位向左位移,将空出来的低序位均设置为零。
C#移位运算符之右移位:
int operator >>(int x, int count); uint operator >>(uint x, int count); long operator >>(long x, int count); ulong operator >>(ulong x, int count); >> 运算符将 x 向右位移若干个位,具体计算方法如下所述。
当 x 为 int 或 long 类型时,放弃 x 的低序位,将剩余的位向右位移,如果 x 非负,则将高序空位位置设置为零,如果 x 为负,则将其设置为 1。
当 x 为 uint 或 ulong 类型时,放弃 x 的低序位,将剩余的位向右位移,并将高序空位位置设置为零。
C#移位运算符的使用:
对于预定义运算符,位移的位数按下面这样计算:
当 x 的类型为 int 或 uint 时,位移计数由 count 的低序的 5 位给出。换言之,位移计数由 count & 0x1F 计算出。
当 x 的类型为 long 或 ulong 时,位移计数由 count 的低序的 6 位给出。换言之,位移计数由 count & 0x3F 计算出。
如果计算位移计数的结果为零,则移位运算符只返回 x 的值。
移位运算从不会导致溢出,并且在 checked 和 unchecked 上下文中产生的结果相同。
当 >> 运算符的左操作数为有符号的整型时,该运算符执行算术右移位,在此过程中,操作数的最有效位(符号位)的值扩展到高序空位位置。当 >> 运算符的左操作数为无符号的整型时,该运算符执行逻辑右移位,在此过程中,高序空位位置总是设置为零。若要执行与由操作数类型确定的不同的移位运算,可以使用显式强制转换。例如,如果 x 是 int 类型的变量,则 unchecked((int)((uint)x >> y)) 运算执行 x 的逻辑右移位。
C#移位运算符的相关内容就介绍到这里,希望对你学习C#移位运算符有所帮助。
<<和>>都是指二进制位移操作
比如
int a=8;
a>>1;
//8的2进制是0000000000001000
那么a就等于4了
//0000000000000100
NET,是国内域名